Java-003-朝花夕拾

java基本回顾

java基本数据类型

这里写图片描述

这里写图片描述

Final常量是在程序运行中一直不变的量,在整个程序中只被赋一次值,所以声明常量时一定要赋初值。

变量范围

分为成员变量和局部变量
成员变量又可以细分为:实例变量(直接在类里定义的变量就是实例变量)和静态变量。实例变量范围是整个类,静态变量范围是可以跨类。
局部变量只在对应的代码块中有作用。
关于变量初始化的问题在java中不管是局部变量还是成员变量,初始化时都不是必须赋初值的,但是如果在运行时,使用到了某个变量(成员变量或者局部变量)必须赋初值,否则会报错。

逻辑运算符

这里写图片描述

&和&&的区别
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都 为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。 &&还具有短路的功能 ,即如果第一个表达式为 false,则不再计算第二个表达式,例如,对 于 if(str != null&& !str.equals(“”))表达式,当 str 为 null 时,后面的表达式不会执行,所以不 会出现 NullPointerException 如果将&&改为&,则会抛出 NullPointerException 异常。 If(x==33 &++y>0) y 会增长,If(x==33 && ++y>0)不会增长 &还可以用作位运算符,当&操作符两边的表达式不是 boolean 类型时,&表示按位与操作,
我们通常使用0x0f 来与一个整数进行&运算,来获取该整数的最低4个 bit 位,例如,0x31 & 0x0f 的结果为0x01。

位运算符

这里写图片描述

三元运算符是java中唯一的一个三目运算符==》表达式1?表达式2:表达式3;

数据类型的转换

java对数据类型的转换有严格规定,从低级类型转换为高级类型时可以隐式转换,由高级到低级的转换必须显示转换。
在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为(byte,short,char)–int–long–float–double

字符串中的比较

在字符串的比较中既可以用“= = ”也可以用equals( ) 方法,但是比较运算符“= = ”并不适合用来比较字符串,整型数据比较合适。这涉及到了java的内存分配机制,比较运算符“= =”比较的是内存位置,当使用 String a = “hello” ; String b = “hello” ;时java为了节省存储空间,会将a和b指向同一个内存位置的“hello”所以这时 a == b 返回的是true。但是当使用String c = new String(“hello”);时,该声明方法是另外开辟了一个存储空间,所以 a == c返回的是false。

java中的类和方法

java中比较特殊的方法是类的构造方法,定义构造方法时,构造方法没有返回值也不需要void进行修饰,普通的无返回方法是要有void修饰的。
主入口方法 也是类中比较特别的方法必须满足编译器对他的限制
这里写图片描述

静态变量,变量和方法

静态数据和静态放发的目的通常是为了共享数据或者方法。(很明显,静态的共享性和局部变量的局部性是冲突的,所以静态变量是不能在方法中定义的,要在类中直接定义)
注意的是
1:静态方法中不可以直接使用this关键字。
2:静态方法不可以直接调用非静态方法。

权限修饰符

Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符。
在Java中对于“类”的权限修饰只有两种public和 “无”(但是内部类是可以用private,protected和public修饰的)
变量的权限修饰符
这里写图片描述

接口,继承和多态

java语言是单继承多接口。

接口

接口的定义与类的定义一样,其基本的语法结构如下。
这里写图片描述
接口的参数定义说明如下。
这里写图片描述
接口中只有方法的定义,没有方法的实现,所以方法时不带花括号”{}“的,当实现接口时必须实现接口中的方法。

类的继承

继承中的重写(也可以成为覆盖):重写时方法中只有方法体与父类不同,其他一切和父类相同。

多态

java中通常使用重写和重载来实现类的多态性。
重载:在java中重载就是通过方法参数的不同来实现的,方法返回值的类型不能作为重载的区分方法的标志。

类的高级特性

抽象类

抽象类就是只是声明方法而 不去实现它。抽象类不能被实例化,其定义方式如下
这里写图片描述
(注意abstract在这里修饰的是类的类别而不是权限,要与private,public和protected这样的权限修饰符区别开来)

抽象方法不能用private,final和static来修饰
原因:抽象方法的最实质的意义在于被未来的子类覆盖实现掉,它自己是个空方法。private的实质意义在于本类其他方法调用它。你自己是个空方法,别人调用你有什么用?所以abstract和private在一起毫无意义。final规定子类不能再覆盖它。abstract是专等着要别人来覆盖,二者矛盾。所以不能放在一起使用。
有关static是在执行main时就已经确定的。而abstract一定用到动态方法调度。所以这静态和动态二者是矛盾的,不能一起用。因为道理是这样,所以当时sun公司的设计者就这样设计了。

Class类和反射机制

java的反射机制,可以在程序中访问已经加载到JVM中的java的描述,实现访问,检测和修改java对象本身信息的功能,java的反射机制非常强大。

java的集合类

java.util包中提供了一些集合类,集合类有被称为容器。
集合类和数组有什么区别呢:数组长度是固定的,集合长度是可变的;数组用来存放基本数据类型,集合用来存放对象的引用。
常见的集合有:List集合,set集合,map集合。
list集合最为普通。
set集合中不允许有重复值,如果有set会去掉重复值。
map集合中的元素是通过key,value进行存储的,要想获得集合中指定的key值或者value值,需要通过相应的方法获取key集合或者value集合,再遍历key集合或value集合获取指定值。
网页上的那些城市选择就是用map实现的,下面举个示例。
这里写图片描述

集合类接口的实现类

List接口的实现类
ArrayList类和LinkedList类
这里写图片描述
Set接口的实现类
Set接口的实现类常用的有HashSet和TreeSet
这里写图片描述
Map接口的实现类
Map接口的实现类有HashMap和TreeMap
这里写图片描述

迭代器

这里写图片描述
迭代器的简单示例:
这里写图片描述

异常

异常基本可以分为两大类:可控式异常和运行时异常。

可控式异常是指编译器可以发现的异常。
这里写图片描述

运行时异常是指编译器发现不了,但是在运行到异常处时会引发的异常。
这里写图片描述

异常处理

异常的处理可以用 try…..catch ; try …….catch…..finally ; try……..finally三种方式。

这里写图片描述
这里写图片描述
这里写图片描述
不管是否有异常,finally内的语句块可定会被执行,所以finally语句块中一般放置释放资源的语句。

用throws也可以抛出异常信息,也可以继承Exception来自定义异常。

异常不宜使用过多,try所覆盖的块也不宜过大,会增加系统的负担。

输入输出

流的概念:一组有序的数据序列。

java高级基础

多线程

一个线程是进程中的执行流程,一个进程中可以有多个线程,每个线程也可以得到一小段程序的执行时间,这样一个进程就可以具有多个并发执行的线程。
Java中提供了两种方式实现线程,分别继承java.lang.Thread 和java.lang.Runnable 接口

继承Thread类

这里写图片描述
完成线程真正功能的代码放在run()方法中。

实现Runnable接口

这里写图片描述
这里写图片描述
注意:在实现Runnable接口中,启动一个新线程,不是直接调用Thread子类对象的run()方法,而是调用Thread子类对象的start()方法,Thread类的start()方法产生一个新的线程,该线程运行Thread子类的run()方法。
这里写图片描述
要注意线程的不同的状态,因为不同的状态下,线程能执行的任务是不同的。

线程的声明周期
这里写图片描述
这里写图片描述
虽然多线程看起来像是同时执行,实际上同一时间点上只有一个线程被执行,只是线程之间的切换较快,所以使人产生了线程是同时进行的假象。系统会为每个线程分配一段cpu时间片,一旦时间片用完,就会将当前线程换成下个线程。

多线程

线程的加入: 假设当前线程为A,现在需要加入线程B,并要求先执行线程B,再执行线程A,此时就可以使用jion()方法来完成。此时就会先执行完线程B,再执行线程A。

线程的终止: 在以往的时候会采用stop()方法来终止线程,不过现在更提倡在run()方法中使用无限循环模式,然后使用一个boolean标记来终止循环的方式来终止线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值