javaSE学习(2):理解一个对象的初始化过程(显示初始化,默认初始化,

/*
以手机类为例,来理解一个内存的分配空间
*/
class Phone{
   String brand;
   int price;
   String color;

   public void call(String name){..}
   public void playGame(){...}

}

class PhoneDemo{
    public static void main(){
      Phone p= new Phone();
      p.brand="一加7";
      p.price=2999;
      p.color="红色";
    
      p.call("虎哥");
      p.playGame();
   }

 }

}

1.首先加载.两个class文件进入方法区,如图。

2.main方法入栈,然后执行语句Phone p=new Phone();

3.new对象创建之前,首先会去方法区找是否有对应的class文件,有,然后把class文件的成员变量拿到新创建的对象中。而方法不用拿,调用时,只需取出来用即可。

4.然后把成员变量赋值,

5.调用方法,通过地址调用去方法区找,调用的方法入栈

6.方法调用完毕,则从内存中消失,整个做完,最后main方法出栈,

 

问题:Phone p=new Phone();在程序中做了什么呢?

    1. 加载Phone.class文件进内存
    2. 在栈内存为p开辟空间
    3. 在堆内存为手机对象开辟空间
    4. 对手机对象的成员变量进行默认初始化
    5. 对手机对象的成员变量进行显示初始化
    6. 通过构造方法对手机对象的成员变量赋值
    7. 手机对象初始化完毕,把对象地址赋值给s变量

 

什么是默认初始化和显示初始化?

答:默认初始化是系统在堆内存创建一个新的对象时,进行的默认初始化,如null 和0

显示初始化是在类定义时,直接在各个成员变量的定义时,优先进行赋值,这叫显示初始化。

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值