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 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变量。

 

转载于:https://www.cnblogs.com/bye-2012lx/p/4174717.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值