首页 > 代码库 > Java学习之对象的初始化过程
Java学习之对象的初始化过程
示例代码:
1 class Person 2 { 3 private Person(){} 4 private String name = "hah"; 5 private int age; 6 private static String country = "cn";
//构造函数 7 Person(String name,int age) 8 { 9 this.name = name;10 this.age = age;11 }
//静态代码块12 static13 {14 System.out.println("hello, man"); 15 }
//构造代码块16 {17 System.out.println(name+".."+age);18 }19 public void setName(String name)20 {21 this.name = name;22 }23
//非静态函数24 public void speak()25 {26 System.out.println(this.name+"..."+this.age);27 }28
//静态函数29 public static void showCountry()30 {31 System.out.println("country="+Person.country);32 Person.method();33 }34 public static void method()35 {36 System.out.println("method run");37 }38 39 }40 41 class PersonDemo42 {43 public static void main(String[] args) 44 {45 Person p = new Person("zhangsan",20);46 p.setName("lisi");47 new Person();48 }49 }
例如:Person p = new Person("zhangsan",20);
该句话都做了什么事情?
1)因为new用到了Person.class.所以会先找到Person.class文件并加载到内存中。
2)执行该类中的static代码块(如果有的话),给Person.class类进行初始化。
3)在堆内存中开辟空间,分配内存地址(十六进制:如:0x0015)。
4)在堆内存中建立对象的特有属性。并进行默认初始化。 (如:name = null; age = 0;)
5)对属性进行显示初始化。(如:name = "haha";)
6)对对象进行构造代码块初始化。
7)对对象进行对应的构造函数初始化。
8)将内存地址付给栈内存中的p变量。
Java学习之对象的初始化过程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。