首先,我在 SO 和 Google 中都搜索了这个。如果你说这是某处某物的复制品,那确实很难达到。
嗯...我们知道字符串是对象,必须使用等号进行比较,对吧?
那么,请解释一下:
String s1 = new String("string");
String s2 = new String("string");
String s3 = "string";
System.out.println(s1.equals(s2)); // true
System.out.println(s1 == s2); // false
System.out.println(s1 == "string"); // false
System.out.println(s2 == "string"); // false
System.out.println(s3 == "string"); // true
关于== "string"
输出,为什么只有最后一个打印“真”?
当它们被创建时,它们不都是字符串吗?现在我的第三根弦是丑小鸭吗?...更糟糕的是:如果我正在使用外国字符串...它可能不是我认为的字符串?!(注意 s3String
之前有,而不是一些原始的。)
...我很确定 s3 里面有一个对象。
换句话说,像这样声明 String 有什么区别:
String s1 = new String("string");
还有一个是这样的:
String s3 = "string";
?