日期:2014-05-20  浏览次数:20813 次

java的system.out.println的问题
String str1 = new String("liunim");
String str2 = str1;
System.out.println("str1 == str2:"+ str1==str2);

的结果为什么是false???

------解决方案--------------------
是运算符的顺序导致的吧,先将前两个对象相加在和str2比较。。

------解决方案--------------------
String str1 = new String("liunim");
String str2 = str1;
System.out.println("str1 == str2: "+ (str1 == str2));

这样就true了,不加括号的话,因为前面引号里面的也是String,所以会跟str1加起来再跟str2比较哦~
------解决方案--------------------
同意楼上两位的说法。

看来楼主刚学java的娃。

建议没事翻翻源码多看看里面的比较方法

还有==


------解决方案--------------------
优先级问题,ls都已经说了
System.out.println("str1 == str2:"+ str1==str2);
等价于
System.out.println(("str1 == str2:"+ str1)==str2);
------解决方案--------------------
探讨
String str1 = new String("liunim");
String str2 = str1;
System.out.println("str1 == str2: "+ (str1 == str2));

这样就true了,不加括号的话,因为前面引号里面的也是String,所以会跟str1加起来再跟str2比较哦~

------解决方案--------------------
字符串间的比较肯定是使用equals()来比较的。
用“==”来判断字符串变量是否相等时,它是通过判断两个变量的标识(也就是id号)来决定的,即如果a和b同时指向的是内存中的同一个对象,那么他们的id号是相同的,内容当然也是相同的,而我们这里要判断的是两个不同对象中的字符串内容是否相等,很明显,是不同的对象,那么,用“==”来判断的话,结果肯定都是false了
------解决方案--------------------
探讨

字符串间的比较肯定是使用equals()来比较的。
用“==”来判断字符串变量是否相等时,它是通过判断两个变量的标识(也就是id号)来决定的,即如果a和b同时指向的是内存中的同一个对象,那么他们的id号是相同的,内容当然也是相同的,而我们这里要判断的是两个不同对象中的字符串内容是否相等,很明显,是不同的对象,那么,用“==”来判断的话,结果肯定都是false了

------解决方案--------------------
优先级的问题,亲
------解决方案--------------------
肯定是运算符优先级的问题提。
运算符的优先级还是要弄清楚的
------解决方案--------------------
[Quote=引用:]

引用:

字符串间的比较肯定是使用equals()来比较的。
用“==”来判断字符串变量是否相等时,它是通过判断两个变量的标识(也就是id号)来决定的,即如果a和b同时指向的是内存中的同一个对象,那么他们的id号是相同的,内容当然也是相同的,而我们这里要判断的是两个不同对象中的字符串内容是否相等,很明显,是不同的对象,那么,用“==”来判断的话,结果肯定都是false了
……
[/Quote]
++++++
------解决方案--------------------
+1
探讨
String str1 = new String("liunim");
String str2 = str1;
System.out.println("str1 == str2: "+ (str1 == str2));

这样就true了,不加括号的话,因为前面引号里面的也是String,所以会跟str1加起来再跟str2比较哦~