您的位置:首页 > 编程语言 > Java开发

Java深入学习之--初始化

2015-08-23 00:20 489 查看
目录  

  1、方法重载

  2、默认构造器

  3、this关键字

  4、static关键字

  5、初始化

1、方法重载

  java中方法重载的意思是在同一个类中可以存在方法名相同的方法,而方法的参数类型不同,即使两个方法的参数列表完全相同但只要顺序不同也可以,方法的重载适应于构造器,与方法的返回值类型无关。而java就是根据参数列表来区分具体调用哪一个方法。

class M1{
M1(int i){
System.out.println("M1(" + i + ")");
}
}

class M2{
static{
System.out.println("static 1");
}
//new M1(1);
M1 m1 = new M1(1);
static{
System.out.println("static 2");
}

M2(){
System.out.println("M2()");
m3 = new M1(33);
}

M1 m2 = new M1(2);
void f(){
System.out.println("f()");
}
M1 m3 = new M1(3);
}

public class Test2 {
public static void main(String[] args) {
M2 m = new M2();
m.f();
System.out.println("--------分隔线-------");
M2 m2 = new M2();
}

}
/*
static 1
static 2
M1(1)
M1(2)
M1(3)
M2()
M1(33)
f()
--------分隔线-------
M1(1)
M1(2)
M1(3)
M2()
M1(33)
*/


View Code
  由运行结果可以观察到重复创建对象静态代码块只执行了一次,而且是在创建对象或者调用类的方法时才会执行一次,这个也是最先执行的,然后就是非静态实例的初始化了,这个每创建一次对象都会执行一次,然后就是构造器的执行了,其实可以简单的理解因为静态的成员是类公用的嘛,第一次初始化了不就保证了成员不是null嘛,后面就用不着了,但非静态实例初始化和构造器初始化都是每个对象单独的一份,当然每次用都要初始化咯。

  总结一下对象的创建过程,假设有个Dog类:

  1、当一次创建Dog类的对象或者调用Dog类的静态方法时,java编译器就会查看类路径,查找Dog.Class文件。

  2、然后加载Dog.Class,有关静态初始化的过程就在这个时候执行,而且只执行一次,注意:所有的都会执行。

  3、当用new Dog()创建对象的,就在堆上给该对象分配的存储空间。

  4、然后会对该类的变量进行初始化,全部初始化成默认值,引用设为null。

  5、非静态代码块的初始化操作,这时候会把相应的默认值替换掉。

  6、执行构造器进行初始化,这不非静态实例、静态实例初始化的值又可能被替换掉嘛。

原文参考自Thingk in java,转载请注明原文出处:/article/5263732.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: