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);
------解决方案--------------------
------解决方案--------------------字符串间的比较肯定是使用equals()来比较的。
用“==”来判断字符串变量是否相等时,它是通过判断两个变量的标识(也就是id号)来决定的,即如果a和b同时指向的是内存中的同一个对象,那么他们的id号是相同的,内容当然也是相同的,而我们这里要判断的是两个不同对象中的字符串内容是否相等,很明显,是不同的对象,那么,用“==”来判断的话,结果肯定都是false了
------解决方案--------------------
------解决方案--------------------优先级的问题,亲
------解决方案--------------------肯定是运算符优先级的问题提。
运算符的优先级还是要弄清楚的
------解决方案--------------------[Quote=引用:]
引用:
字符串间的比较肯定是使用equals()来比较的。
用“==”来判断字符串变量是否相等时,它是通过判断两个变量的标识(也就是id号)来决定的,即如果a和b同时指向的是内存中的同一个对象,那么他们的id号是相同的,内容当然也是相同的,而我们这里要判断的是两个不同对象中的字符串内容是否相等,很明显,是不同的对象,那么,用“==”来判断的话,结果肯定都是false了
……
[/Quote]
++++++
------解决方案--------------------+1