Java核心技术卷1

第四章

无聊的Date类

A类使用了B类时,只需要:
>javac A.java
即可以编译A和B
java编译器会自动比较.class和.java文件的版本,如果.java较新则自动重新编译之。

访问器最好返回成员变量的拷贝,clone

final修饰成员变量时,声明时可以不给初值,即final空白,在第一次使用之前必须被初始化。

每一个类都可以有一个main方法,可用于单元测试。

Java采用值传递

多个函数具有相同名称不同参数,叫做重载;函数的签名包括函数名称和参数,而不包括返回值。

局部变量未初始化时,会引起编译错误;类成员变量未初始化时会默认被初始化

显示域初始化

java一个构造器可以调用另一个构造器,用this(x,y,z);C++没有这种方式

第五章

super和this的实现是不同的,super并不是一个对象的引用,不能将super赋值给一个变量,它只是一个指示编译器调用超类方法的特有关键字。

使用this或super调用构造函数时,必须放在首行

Integer Long是「包装器」,对于和基本类型的转换时「编译器」进行的自动打包和拆包,而不是jvm的行为。

java也支持参数数量可变的方法,并且最后一个参数可以传递数组。
main方法也可以写成:

public static void main(String... args)

强制类型转换:

强制类型转换的前提是父类型引用指向的对象类型确实是之类对象,此时才可以进行转换,否则会抛出ClassCastException异常。正确的方式是在转换前通过instanceof来判断。

使用Method实现回调功能,是C程序员的方式,Java应该使用接口实现。

第六章

接口中不能包含实例域或静态方法,但是可以包含常量。
接口中方法默认为public;接口中常量默认为public static final。

一个类只能继承一个超类,但是可以实现多个接口

内部类


Java核心技术卷1_第1张图片
图片发自App

内部类可以声明为public或private

内部类的对象有一个隐式引用,它引用了实例化该内部对象的外围类对象,通过这个引用,可以访问外围类对象的全部状态。static内部类没有这种指针

内部类声明为私有,只有其外部类才能够生成内部类对象。只有内部类可以是私有类,而常规类只可以具有包可见性,或公有可见性。

javap命令

内部类会生成outer$inner. class的文件

局部内部类的实现:


Java核心技术卷1_第2张图片
图片发自App

注意局部内部类是如何访问final的局部变量的,这里有些像闭包。

Java核心技术卷1_第3张图片
图片发自App

当内部类不需要引用任何外部类的对象时,可以声明为static。
声明在接口中的内部类自动成为static和public。

你可能感兴趣的:(Java核心技术卷1)