我应该如何声明字符串?

时间:2013-02-03 17:32:01

标签: java

  

可能重复:
  Questions about Java’s String pool

在Java中声明字符串的两种方式有什么区别?

String se1 = "java";
String se2 = "java";
System.out.println(se1 == se2); // output true

String str1 = new String("OKAY");
String str2 = new String("OKAY");
System.out.println(str1 == str2); // output false

4 个答案:

答案 0 :(得分:2)

对象上的

==通过引用进行比较。由于称为内化的特征,第一对字符串被认为是相等的。要比较内容相等的字符串,请使用

s1.compareTo(s2) == 0

s1.equals(s2)

答案 1 :(得分:2)

只有一个字符串常量实例,例如"ohai",因此==将起作用。

新的String对象只是新对象,可以从另一个字符串的值创建。

字符串应该几乎总是与.equals进行比较,例如

str1.equals(str2);

这会比较字符串,而不是引用。

答案 2 :(得分:1)

在第一种情况下,您已将 se1 se2 声明为字符串文字。因此,您可以使用 == 运算符来比较两个字符串

但在后来的情况下, str1 str2 字符串对象,因此通过==运算符的计算失败。要比较两个对象,您应该使用等于方法。

答案 3 :(得分:1)

在比较包含字符串的对象时,不应使用==。通常==会比较引用,因此它仅返回相同对象的true。您应该使用equals()方法:str1.equals(str2)

在第一种情况下偶尔会对你有用,因为java会缓存字符串常量,所以"java"在两种情况下都由相同的String实例表示。