下面的代码运行输出“0.0 0.0 null null null null null”。
说明了类的成员变量均会被初始化,说明new了以后,会分配内存。可是,如果再声名一个对象XiyoujiRenwu suwukong = new XiyoujiRenwu();让suwukong = zhubajie;此时,是不是suwukong与zhubajie根本就是一模一样的东西?
是不是原先分配给suwukong的内存就释放了?
class XiyoujiRenwu
{
float height, weight;
String head, ear, hand, foot, mouth;
void speak(String s)
{
System.out.println(s);
}
}public class Example4_3
{
public static void main(String[] args)
{
XiyoujiRenwu zhubajie; //声名对象
zhubajie = new XiyoujiRenwu(); //为对象分配内存,使用new运算符和默认的构造方法
zhubajie.head = "null"; //人工控制的null
System.out.println(
zhubajie.height
+ " " + zhubajie.weight
+ " " + zhubajie.head
+ " " + zhubajie.ear
+ " " + zhubajie.hand
+ " " + zhubajie.foot
+ " " + zhubajie.mouth
);
}
}
说明了类的成员变量均会被初始化,说明new了以后,会分配内存。可是,如果再声名一个对象XiyoujiRenwu suwukong = new XiyoujiRenwu();让suwukong = zhubajie;此时,是不是suwukong与zhubajie根本就是一模一样的东西?
是不是原先分配给suwukong的内存就释放了?
class XiyoujiRenwu
{
float height, weight;
String head, ear, hand, foot, mouth;
void speak(String s)
{
System.out.println(s);
}
}public class Example4_3
{
public static void main(String[] args)
{
XiyoujiRenwu zhubajie; //声名对象
zhubajie = new XiyoujiRenwu(); //为对象分配内存,使用new运算符和默认的构造方法
zhubajie.head = "null"; //人工控制的null
System.out.println(
zhubajie.height
+ " " + zhubajie.weight
+ " " + zhubajie.head
+ " " + zhubajie.ear
+ " " + zhubajie.hand
+ " " + zhubajie.foot
+ " " + zhubajie.mouth
);
}
}
解决方案 »
- 弄个题玩玩
- 如何提高循环时间
- swing里如何取得窗口中输入的字符
- 关于native2ascii和编码的疑问-对编码有深入了解高手进
- 新手初学java,关于汉字显示问题,高手赐教(小妹谢谢各位大侠)!
- 简单问题!20分
- sql server 2000和jdbc for sql server 2002都安装好了,但还是出错。
- 关于的system.out.flush()问题
- 帮我看一段程序,为什么会发生这样的错误,谢谢,我用的工具是JCREATOR
- found an article about returning null or throwing exception.
- 多窗口中的键盘监视响应问题
- 关于Java的对象和变量概念的区分.请高手前来解答下,THAKNS
分配的内存会等jvm做垃圾清理
原來suwukong的內存看JVM高興什麼時候收回了。
suwukong = zhubajie是将 zhubajie 的 内存地址 给了suwukong
suwukong 和 zhubajie 都指向 同一个内存,即就是一模一样的东西
原来 的 suwukong 指向的内存 等待回收
是一样的东西,它们都指向同一块内存区域
2、是不是原先分配给suwukong的内存就释放了?
没有立即释放,还是在那里,只不过没有引用指向原来的内存了,所以当垃圾收集器工作时,就会把这块内存回收
suwukong = zhubajie,那么这个时候,suwukong指向zhubajie所指向的内容。
如果以前的sunwukong对象没有被别的变量引用,那么jvm会回收这个对象了。