|
1
2
3
4
|
class?Person{
????String?name;
????static?int?eyeNum;
} |
|
1
2
3
4
5
6
|
Person?p1?=?new?Person();
Person?p2?=?new?Person();
p1.name?=?"A";
p2.name?=?"B"
p1.eyeNum?=?2;
p2.eyeNum?=?3;
|
Person p1 = new Person();第一次使用Person类,系统在堆内存为Person类分配空间,其中也包括了静态成员变量eyeNum(初始值为0)。
然后,在堆内存new一个Person对象,其中name为null,然后将p1指向这个对象。
接着new p2时,因为类已经初始化了,只需重复第2步就行了。
p1.name = "A"; 让堆内存中p1对象的name指向一个"A"字符串。
p1.eyeNem = 2;此时通过Person对象修改Person的类属性(因为是静态成员变量),Person类的eyeNum属性被赋值为2。
?
| ? | ? | ? | Person类 | ? | ? | ? | ? | ? | ? |
| ? | ? | ? | eyeNum?→2 | ? | ? | ? | ? | ? | ? |
| p1 | ------ | -- | ---------------- | --- | → | ? | ? | ? | ? |
| ? | ? | → | 第二个Person对象 | ? | ? | 第一个Person对象 | ? | ? | ? |
| p2 | ------ | ? | name → | "B" | ? | name → | "A" | ? | ? |
| ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
| 栈内存 | ? | ? | 堆 | ? | 内 | ? | 存 | ? | ? |
?
原文:http://aijuans.iteye.com/blog/2162856