代码改变世界

[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 类的初始化顺序

  静态成员->普通成员->静态方法->构造器