String s5="Ram";
String s6="Ram";
System.out.println(" s5==s6 is " + s5==s6); // false
System.out.println(s5==s6); // true为什么第一行是false,第二行是true always?
发布于 2019-02-22 14:21:53
由于+比==具有更高的优先级,
" s5==s6 is "+s5==s6计算结果为
" s5==s6 is Ram"=="Ram"这显然是错误的。你可以通过使用括号来避免这个特殊的问题:
" s5==s6 is "+(s5==s6)同时,
s5==s6计算结果为
"Ram"=="Ram"这是真的,因为Java中字符串文字是自动插入的。如果计算的是其中一个字符串而不是文字,则它将为false,因为==会比较对象标识,并且两个不同的字符串对象将被计算为不同的对象,即使它们具有相同的内容。比较
String s5 = new String("Ram");
String s6 = new String("Ram");
System.out.println(s5==s6); //false使用.equals对字符串内容进行有意义的比较:
System.out.println(s5.equals(s6)); //truehttps://stackoverflow.com/questions/54821098
复制相似问题