首页 > 代码库 > Java便利贴3

Java便利贴3

看下面的类:

class Cat (    int id;    String name;    static int sid;       Cat (String name)     {         this.name = name;
id = sid++; }
public static void main (String[] args) { Cat.sid = 100; Cat mimi = new Cat("mimi"); Cat pipi = new Cat("pipi"); }}

内存的分配情况如下:

1、main方法中第一行 Cat.sid = 100

     因为sid是静态变量,无论Cat类是否创建了对象,创建了几个对象,都只是在Data segment(数据区)分配一块内存,类型是int,名字叫sid,值为100.

2、第二行new了一个Cat对象,首先会在栈中分配一块内存,放局部变量mimi,然后在堆中构建一个Cat对象,里面有id和name属性。

     String其实是个类,“mimi”是字符串常量,会在Data segment中分配一块内存,所以name属性是"mimi"的引用。

3、第三行再构建一个Cat对象pipi,同理,只不过此时sid变成102。

最后的内存分配如下图:

 

Java便利贴3