创建对象的内存分析

创建对象的内存分析

创建一个类

package oop.demo02;

public class Demo01 {
   String name;
   int age;
   public void shout(){
       System.out.println("叫了一声");
  }
}

创建一个主方法类

package oop.demo02;

public class Application {
   public static void main(String[] args) {
       Demo01 Demo01 = new Demo01();
       Demo01.name = "小狗";
       Demo01.age = 3;
  }
}

创建对象的内存流程分析如下:

在主方法Application中new一个Demo01,由main方法调用Demo01的类,Demo01中的变量生成一个Demo01的引用类型,引用类型类似一把钥匙,没有储存任何东西,真正的对象,是用Demo01引用类型去"堆"中生成,然后Application中的值(name = "小狗;age = 3;)"赋值给这个Demo01对象。此时,这个对象中的值才会从初始值变为Application中的值。

当再在Application中new一个Demo01,栈中又会再次生成一个引用类型,然后再次在堆中加载出一个对象,由Application中对这个对象赋的值传输给这个对象。

静态方法:

所有带static的东西,都存放在静态方法这个区域。静态方法是和类一起加载的,当类加载的时候,静态方法也一起加载了。所以静态方法可以被所有对象所使用。

 

原文地址:https://www.cnblogs.com/jinweichaoyouqu/p/13925859.html