请问各位大侠们:
在下有这么一个低极的问题请教:
String s1=new String("xyz");
String s2=new String("xyz");
共创建了几个对象??
为什么?他在内存中的状态是怎么回事?
谢谢!!
在下有这么一个低极的问题请教:
String s1=new String("xyz");
String s2=new String("xyz");
共创建了几个对象??
为什么?他在内存中的状态是怎么回事?
谢谢!!
一个"xyz"
第二个 s1
第三个 s2
对你的说法存在怀疑,
做了个测试.public class StringTest
{
public static void main(String[] args)
{
String s1=new String("xyz");
String s2=new String("xyz");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
}
}结果是:false true
==是用来测试二个字符串是不是放在同一个位置上,而结果是false,所以你的说法不对.
To:aelang0725
String s1="xyz";
String s2="xyz";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
这样才是你说的那种情况
JVM能听你的吗?要我说,知道如何写clone()方法,就足够了!深COPY,浅COPY,
都是写书的人来忽悠人的!
TO: sanpi828()
aelang0725()说得有一定道理,关键是你用了new所以你的s1==s2是false,如果你不用new呢?
拷贝下面的代码运行一下看看!
那么下面的代码创建了几个对象呢?
我认为只创建了1个对象就是"xyz",但是创建了2个引用s1,s2都指向对象"xyz"。*/
//StringTest.java
public class StringTest
{
public static void main(String[] args)
{
String s1="xyz";
String s2="xyz";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
}
}
sg552(:)) ( ) 信誉:100 Blog 2006-12-11 22:16:54 得分: 0
在JAVA这个不存在指针和地址的环境中,讨论这个有意义吗?就算你知道这个对象没用了,可以释放空间了,你能把它释放吗?
JVM能听你的吗?要我说,知道如何写clone()方法,就足够了!深COPY,浅COPY,
都是写书的人来忽悠人的!
这位仁兄说话够简洁明了,很多东西主要在学习起初时因为不明白所以我们必须要懂的它在内存中的分布,能够使我们更好的理解东西.为什么我们中国人都在使用外国老的东西开发,一想到国所谓的很多牛人,真的牛吗?
String x1 = "xyz";
String x2 = "xyz";
其中"xyz"只在内存中存了一次吗?
两个都只是引用而以,像C中的指针吗