public class test
{
private static String s="string";
public static void main(String a[])
{
String t="strin"+“g”;
System.out.println(s==t);
}
}
不运行,你说结果应该是啥?给出详细答案。我实在是不明白呀!
{
private static String s="string";
public static void main(String a[])
{
String t="strin"+“g”;
System.out.println(s==t);
}
}
不运行,你说结果应该是啥?给出详细答案。我实在是不明白呀!
能運行嗎?
通不過吧
應該是true 應為兩個value都是string
有誰去運行過的告訴下
我懶得開eclipse了。。
就算是
String t="strin"+"g";
這樣也是通不過的吧。。
应该是:String t="strin"+"g";
System.out.println(s==t); 我这里就是不明白s和t怎么是同一个对象呢,因为==比较的内存地址吧。
高手给指点下,谢谢。
+连接符连接2个字符串之后就会形成一个新的string对象,
与直接用=赋值给一个string对象还是有区别的.
所以是不会相等的.
看来你给的分太少,大家都着急要分,这个帖子就没有人看了。
由于s和t实际上都是对于常量string的引用,因此他们的地址是相同的
如果你把第一句改为
private static String s = new String("string");
则会返回false,因为上面的s是对一个值为string的String对象的引用。
在String t="strin"+"g";运算的时候应该是引入了一个StringBuffer吧,
最后是调用StringBuffer的toString方法返回一个值给t。
但是我看源码StringBuffer的toString方法是new一个对象public synchronized String toString() {
return new String(value, 0, count);
}晕了呀,谁能说说+号运算是咋回事。
首先是到java常量池中去寻找,如果有的话就不用到堆内存去开配新空间.没有的的话就开配新空间并且指向他.
“==”是比较的两个引用的内存地址,所以这里返回的应该是true
由于s和t实际上都是对于常量string的引用,因此他们的地址是相同的