首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。