[Thinking_in_Java] 初始化与清理 —— initialize
2012-12-04 11:51 @影子@ 阅读(302) 评论(0) 编辑 收藏 举报初始化与清理 —— initialize
1 构造器是一种特殊的类型,因为它没有返回值,而且在后面会知道,所有的构造函数可以把它理解为特殊的静态方法(the constructor is actually a static method.)。
如果你是在类被加载的时候看待,那么它是static的。因为在JVM加载类时首先会初始化static属性为默认值,在这里构造器会被调用。
如果你是在创建对象的时候看待,那么它不是static的,构造器在里就如对象引用调用成员方法一样。类名后的这个括号“()”就表示调用构造器。如果没有定义构造器,编译器会默认创建一个无参的构造器。
2 方法调用时,如果传入的数据类型小于方法中声明的形式参数类型,实际的数据类型会被提升。换句话说:字节数小的数据类型向最接近其字节数的类型转换
boolen->char->byte->short->int->long->float->double
如果传入的数据类型大于方法中声明的形式参数类型,必须强制将字节数大的数据类型转换成字节数小的数据类型。
3 重载只能以类名和方法的形参列表作为区分标志
根据方法的返回值来区分重载方法是灰常不靠谱的。
4 this
this和js一样,表示是对当前对象的引用。this只能在方法内部使用。
5 static方法
static方法内部不能调用非静态方法,但是非静态方法可以调用static方法。
static和类相关,所以可以在没有任何对象的前提下,仅仅通过类本身来调用static方法。
static方法是没有this的方法。
6 轮不到你用finalize()
7 垃圾回收的机制
引用计数
标记-扫描 && 停止-复制
8 类的初始化顺序
静态成员->普通成员->静态方法->构造器