1. 基本数据类型的包装类
A. Wrapper Class:Byte,Short,Integer,Long,Character,Float,Double,Boolean。
B. 基本数据类型—>包装类对象:newWrapperClass(primitive),反之:WrapprInstance.xxxValue()方法。
C. B中的方法过于繁琐,JDK.5中提供了自动装箱和自动拆箱。包装类parseXxx(String s)静态方法:用于将一个特定字符串转换成基本数据类型。String类也提供了多个重载valueOf()方法:用于将基本类型转换成字符串。
2. 处理对象
A. toString()方法是Object类里的一个实例方法,默认返回,类名+@+hashCode值。
B. ==和equals比较运算符:(1)当使用==来判断两个变量是否相等时,如果两个变量是基本类型的变量时,且都是数值型,则只要两个变量的值相等,则返回true。若对于两个引用类型的变量,必须它们指向同一个对象时,才会返回true。(2)equals方法是Object类的一个实例方法,这个方法判断两个对象相等的标准与==符号没有区别。所以我们可以重写该方法来实现自己定义的相等标准。
3. 类成员
A.单例类(Singleton):一个类始终只能创建一个实例。
4. final修饰符
A. final修饰成员变量:必须由程序员显式初始化。如果打算在构造器,初始化块中副ifinal成员变量进行初始化,则不要在初始化之前就访问成员变量的值。
final修改的类属性,实例属性能指定初始值的地方如下:
实例属性:可在非静态初始块,声明该属性,构造器中指定初始值。
类属性:可在静态初始块,声明该属性时指定初始值。
B. final修饰局部变量
C. 使用final修饰的引用类型变量不能被重新赋值,但可以改变引用型变量所引用对象的内容。
D. final方法不能被重写。注意private final方法,可以被“重写”
E. 缓存实例的不可变类:P186
5. 抽象类
a.abstract
6. 接口
a. interface,接口支持多继承
b. 实现接口方法时,必须使用public访问控制修饰符。
7. 内部类
a. 内部类的成员可以直接访问外部类的私有数据,反之,则不可以。
b. 匿名内部类适合于创建那些仅需一次使用的类
c. 成员内部类是类成员,而局部内部类和匿名内部类不是
d. 外部类的上一级程序单元是包,所以它只有2个作用域:同一个包和任何位置,因此只需要两种访问权限:包访问权限和公开访问权限。内部类的上一级程序单元是外部类,它具有四个作用域:同一个类,同一个包,父子类和任何位置。
e. 如果外部类属性,内部类属性和内部类里方法的局部变量同名,可以通过使用this,外部类类名.this作为限定来区分。
f. 静态内部类和非静态内部类:类相关和实例相关。非静态内部类的构造器必须使用外部类对象来调用。
g. 如果匿名内部类需要访问访问外部类的局部变量,则必须用final修饰符来修饰外部类的局部变量。
h. 闭包(Closure)是一种能被调用的对象,它保存了创建它的作用域的信息。
i. 回调:就是允许客户类通过内部类引用来调用其外部类的方法。P215
8. 枚举类P217
a. 枚举类(enum):实例有限且固定的类。
b. enum定义的枚举类默认继承了java.lang.Enum类,其实现了java.lang.Serializable和java.lang.Comparable。
9. 对象和垃圾回收
a. 垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(例如数据库连接,网络IO)
b. 垃圾回收机制回收任何对象之前,总会先调用它的finalize方法。
c. 对象所处的状态:激活状态,去活状态,死亡状态
d. java –verbose:gc 类名
e. 对象的软,弱和虚引用
10. 修饰符的适用范围P233
11. 使用JAR文件P234