牛骨文教育服务平台(让学习变的简单)
博文笔记

Java中对象的创建过程(内存分析)

创建时间:2016-05-29 投稿人: 浏览次数:844

Java中对象创建的时候,用到了new关键字。那么在内存中,究竟发生了什么?

下面先看一段简单的代码:

先是主函数类(Animal)

package cn.sg.oop.second;
public class Animals {
    public  static  void main(String []args){
    	Cat c=new Cat();
    	c.name="小喵喵";
    	c.age=18;
    	c.eat();
    }
}
然后是一个简单的Cat类:

package cn.sg.oop.second;
public class Cat {
          String  name;
          int age;
          public  void eat(){
        	  System.out.println("小猫正在吃......");
          }
}

代码创建了一个Cat类的具体实例,给Cat的name,age属性赋值,然后调用了一个eat方法

就这几行基本的语句,我们看在内存中发生了什么?



看具体的代码

Cat c=new Cat();
Cat  c,在内存中把c放入栈中

在new Cat的时候,在堆中创建cat,包括cat类中的属性和方法

并给属性初始化,8种基本的数据类型系统都有默认值,比如数值类型的默认为0,除8种基本的数据类型外,其他的引用类型的统一默认为null,如把age默认为0;Cat  c=new  Cat(),即把c的地址传给c;需要注意的是这里是地址引用。到目前为止,即把第一条语句Cat  c=new  Cat()执行完了。

然后是

c.name="小喵喵";
这条语句首先在栈中找到c,通过地址的指向,找到name,赋值为“小喵喵”;

c.age=18;
c.eat();
这两条语句基本相同,先找到c,然后通过地址找到目的地,然后进行相关的操作,由此可见地址的重要性。

对于基本的了解对象在内存中存储,大概就是这样,其实在堆中,其实还有有划分的,小白的我就说这么多了。


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。