码迷,mamicode.com
首页 > 编程语言 > 详细

Java学习之对象的初始化过程

时间:2014-12-19 21:56:27      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

示例代码:

 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 static 13 { 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 PersonDemo 42 { 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学习之对象的初始化过程

标签:

原文地址:http://www.cnblogs.com/bye-2012lx/p/4174717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!