编程思想-初始化与清理

来源:互联网 发布:大数据在行业应用 编辑:程序博客网 时间:2024/06/05 03:19

1.方法重载:方法名相同,参数列表不同(参数的顺序的不同也可以区分两个方法,不过不建议)

注:不以返回值区分重载方法


     2. 构造方法:创建类时,如果没有定义构造函数,系统会默认创建一个不带形参的构造器。如果有定义构造函数,

   系统就不会创建默认构造函数(一般建议自己亲手创建不带形参的构造器)。


3.在构造器中调用构造器:可以使用this调用一个构造器,当不能调用两个,此外,必须将构造器调用至于最起始处,否则编译器会报错

     4.垃圾回收器如何工作:

1.引用计数。给每个对象都含有一个引用计数器,当引用连接到对象时,引用计数加1.当引用离开作用域时

     或者被置为null时,引用计数减1.

    缺陷:如果对象之间存在循环引用,会出现“引用计数不为零”。

2.停止-复制:先暂停程序的运行(所以不属于后台回收模式)。然后将所有存活的对象从当前堆复制到另                      堆中(新堆保持紧凑)

3.标志-清扫:从堆栈和静态存储区中,遍历所有的引用,当它找到一个存活对象,就会给对象设置一个标志,当全部标志完成后,清理没有标志的对象,所以剩下的堆空间是不连续地。


5.对象的创建过程,假设有一个Dog类:

1.即使没有显示地使用static关键字,构造器实际上也是静态方法。因此,当首次创建类型为Dog对象时,或者Dog类的静态方法、静态域首次访问时,java解释器必须查找类路径,定位Dog.class

2.加载Dog.class,将静态初始化的所有动作都执行。静态初始化,只在Class对象第一次创建时进行一次。

3.当 new Dog()创建对象是,首先在堆上给对象分配足够的存储空间。并给所有数据成员初始化

4.执行构造器

6.数组的初始化

在java中,给一个数组赋值给另一个数组,如

int a [] = {1,2,3};

int[] a1 ;

a1 =a ;

其实a1和a是相同数组的别名,通过改变a1在a中可以看到变化。

0 0