一简单的道SCJP题目!! 我知道a和b都指向同一个对象,可是b=null时,为什么a 还有值呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得应该时a和b对象指向的地址是一样,b=null只是擦去了一个指向“hello”的地址,a的指向还在。不知道这么理解对不对?请高手讲一下把请问这道题答案时什么啊?为什么? 我不明白既然b=null了,为什么还会因为a的存在而不能被收集呢? 不可以string对象的建立过程有些特别string对象有一个类似于pool的东西当执行第三行的时候,String a="hello";虚拟机会在内存中建立一个新的string对象,同时将hello放到pool中。当执行到第四行的时候String b="hello";虚拟机会检查pool中有没有hello,如果有那么并不建立新的对象,而是简单的将a的引用付与b。也就是说此时a和b所指向的是同一个对象。因此在第六行并不会被收集。当然如果用String b=new String("hello");就又会不同了,这种方式不检查pool直接新建。这样做在第六行,b所指向的对象就会被收集。 可是b不是已经等于null了么? b是否可以被垃圾收集器收集---是指b的对象从内存中清空,b=null只是把b的对象句柄设为null(见jsyx说的,a和b所指的是一个对象)不能把实例hello清空,所以:即b没有被垃圾收集 String s0="hello"; String s1="hello"; String s2=new String("hello"); String s3=new String("hello"); System.out.println(s0.hashCode()+" "+s1.hashCode()+" "+ s2.hashCode()+" "+s3.hashCode()); System.out.println((s0==s1)+" "+(s0==s2)+" "+(s0==s3)); System.out.println((s1==s2)+" "+(s1==s3)); System.out.println((s2==s3));结果是:99162322 99162322 99162322 99162322true false falsefalse falsefalse嘻嘻 垃圾收集器只能收集以new创建的对象(见<Think In Java>有关内容)所对应的内存 关于FlowLayout的问题,帮忙进来看一下吧 java程序出错!!!实现键盘方向键控制字符串移动,却移动不了,帮我看看代码那里错,谢谢!! 定义接口IAccountDAO如何理解 jFrame打开新窗体,并关闭当前窗体 [初学请教];JAVA哪些教材比较好? 求助poi问题 这是继承方面的知道.能给我讲解一下吗?>? 经典体型求解!!! 请问如何用java解压缩rar文件? 请介绍一下interface/implements好吗?我很菜。 Applet 里面怎么做菜单 高手指点。怎么样让APPLET向文件所在位置写数据?????
不知道这么理解对不对?请高手讲一下把请问这道题答案时什么啊?为什么?
string对象的建立过程有些特别
string对象有一个类似于pool的东西
当执行第三行的时候,String a="hello";虚拟机会在内存中建立一个新的string对象,同时将hello放到pool中。当执行到第四行的时候String b="hello";虚拟机会检查pool中有没有hello,如果有那么并不建立新的对象,而是简单的将a的引用付与b。也就是说此时a和b所指向的是同一个对象。因此在第六行并不会被收集。
当然如果用String b=new String("hello");就又会不同了,这种方式不检查pool直接新建。这样做在第六行,b所指向的对象就会被收集。
不能把实例hello清空,
所以:即b没有被垃圾收集
String s0="hello";
String s1="hello";
String s2=new String("hello");
String s3=new String("hello"); System.out.println(s0.hashCode()+" "+s1.hashCode()+" "+
s2.hashCode()+" "+s3.hashCode());
System.out.println((s0==s1)+" "+(s0==s2)+" "+(s0==s3));
System.out.println((s1==s2)+" "+(s1==s3));
System.out.println((s2==s3));结果是:
99162322 99162322 99162322 99162322
true false false
false false
false嘻嘻