你的位置:首页 > Java教程

[Java教程]面向对象编程(三)——程序执行过程中内存分析


内存分析(SxtStu.java)

栈(stack)

  存放:局部变量;

▶ 堆(heap)

  存放new出来的对象;

▶ 方法区(method)

  存放:类的信息(代码)、static变量、常量池(字符串常量)等.

栈的特点:自动分配连续的空间,后进先出;一般放置局部变量

堆的特点:不连续的空间;放置创建new出的对象;

下面对如下图进行分析:

具体内存分析图如下所示:


 

现对图2进行分析:

Student类:

public class Student {  //静态数据  String name;  int id;  int age;  int weight;    Computer computer;//每个学生有台电脑    //动态的行为  public void study(){    System.out.println(name+"在学习");  }    public void sayHello(String sname){    System.out.println(name + "向" +sname +"说,你好~");  }  }

Computer类:

public class Computer {  String brand;//品牌  int cpuSpeed;//cpu}

则:

public class Test2 {  public static void main(String[] args) {    Student s1=new Student();    s1.name="熊二";    s1.age=18;        Computer c=new Computer();    c.brand="联想";    c.cpuSpeed=100;        s1.computer =c;        //c.brand= "戴尔"; 
  System.out.println(s1.computer.brand); } }

具体内存分析如下:

:如果加上注释部分"c.brand= "戴尔";",s1.computer.brand最后输出的就是"戴尔".因为它们指向的是同一个地方。