Java字符串实习,有什么保证?
|
该问题归结为以下代码: // setup String str1 = "some string"; String str2 = new String(str1); assert str1.equals(str2); assert str1 != str2; String str3 = str2.intern(); // question cases boolean case1 = str1 == "some string"; boolean case2 = str1 == str3; Java标准是否对case1和case2的值提供任何保证? 是的,我看了所有的SO类似的问题,发现没有重复,因为我没有找到回答这个问题.不,这不是关于通过用==替换equals来“优化”字符串比较的错误的想法. 解决方法这是你的JLS报价,Section 3.10.5:
package testPackage;
class Test {
public static void main(String[] args) {
String hello = "Hello",lo = "lo";
System.out.print((hello == "Hello") + " ");
System.out.print((Other.hello == hello) + " ");
System.out.print((other.Other.hello == hello) + " ");
System.out.print((hello == ("Hel"+"lo")) + " ");
System.out.print((hello == ("Hel"+lo)) + " ");
System.out.println(hello == ("Hel"+lo).intern());
}
}
class Other { static String hello = "Hello"; }
package other;
public class Other { static String hello = "Hello"; }
结合JavaDoc实习生,您有足够的信息来推断您的两个案例都将返回真实. (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
