Java之旅 (6) 初始化和清理

类别:Java 点击:0 评论:0 推荐:

用构造函数保证初始化,JAVA的对象创建和初始化是同一个概念,你不能要这个而不要那个。

 

       方法的重载    区分经重载的方法:唯一的参数类型的列表

       构造函数:如果没有构造函数,编译器会帮你创建一个无参类型的构造函数,但是如果你构造了一个,那么

       不管你构造的是个啥样的,编译器都不会再帮你构造了。

 

       this的用法:this只应用于那些,你明确指明要使用当前对象的reference的特殊情况。举例来说,他常用于

       return语句以返回当前对象的reference.

       /////////////////////////////////////

       public      class TestThis

       {

              int i = 0;

             

              TestThis increment()

              {

                     i++;

                     return this;

              }

 

              void print()

              {

                     System.out.println("i="+i);

              }

 

              public static void main(String[] args)

              {

                     TestThis x = new TestThis();

                     x.increment.increment.increment.print();     //i==3

              }

 

       }

       /////////////////////////////////////////

 

       编译器不会让你在方法里调用构造函数,但可以在构造函数里调用构造函数。这个时候可以使用this

       来进行这种调用。

       参数的名字和类的数据成员的名字相同(有时候是刻意如此),可以利用this.x来表示他是

       数据成员,而非参数。

 

       static 的用法:是不是真正的“OOP”,留给理论家吧。

 

       垃圾回收和finalize()都是靠不住的。而且用他们的地方和时机都是个问题。不要太在意。有一点要知道

       System.gc()可以强制的执行finalize();

 

       成员的初始化:基本数据类型,如果是在方法内部定义的局部变量,则不初始化会出错,而如果是类的数据

       成员,则不初始化,编译器会自动负初值。

       下面是对基本创建对象做的一个总结,就用dog为例吧:

       1,第一次创建dog类的对象(构造函数实际上是个static方法),或者第一次访问Dog类的static的方法或

       字段的时候,java解释器会要搜寻classpath,找到Dog.class。

       2,装载了Dog.class后,会对所有的static数据进行初始化。这样第一个装载class对象的时候,会先进行

       static成员的初始化。

       3,用new()创建新对象时,Dog对象的创建进程会先在堆里为对象分配足够的内存。

       4,这快内存先被清零,这样就自动的把Dog对象的primitive类型的成员赋上缺省的值(对于数字就是零,或者相应的boolean和char),将reference设为null。

       5,执行定义成员数据时所作的初始化。

       6,执行构造函数。

 

       ok,今天到这里,明天将学习到的是“隐藏实现”和“复用类”

本文地址:http://com.8s8s.com/it/it13544.htm