比较时使字符串相等

时间:2015-02-14 20:45:59

标签: java string

public class StringEqual
  {
 public static void main(String[] args)
   {
  String str1 = "abcd";
  String str2 = "abcdefg";
  String str3 = str1 + "efg";
  System.out.println("str2 = " + str2);
  System.out.println("str3 = " + str3);
  if (str2 == str3)
  {
     System.out.println("The strings are equal");
  }
  else
  {
     System.out.println("The strings are not equal");
  }
   }
  }

到目前为止,我已经创建了这段代码。现在我想弄明白我如何做到这一点,以便str2和str3在比较时是相同的?

3 个答案:

答案 0 :(得分:1)

如果无法比较字符串,则必须使用equals方法:

if (str2.equals(str3))

答案 1 :(得分:1)

==比较对象参考

String#equals比较内容

所以用{/ p>替换str2==str3

  String str2 = "abcdefg";
  String str3 = str1 + "efg";
  str2.equals(str2); // will return true

答案 2 :(得分:0)

您知道,您需要区分字符串相等性和对象标识。其他答案已经告诉过你它可以使用.equals()。

但是,如果您实际上询问如何通过字符串表达式获取相同的对象:如果它是compile time constant expression,它将是同一个对象。如果它是一个常量表达式,str3将来自常量池,为了这个,你可能只使用最终的字符串变量或字符串文字:

public class FinalString
{
final static String fab  = "ab";
static String        ab  = "ab";
static String        abc = "abc";
static String     nonfin = ab  + "c"; // nonfinal+literal
static String        fin = fab + "c"; // final+literal

public static void main(String[] args)
{
    System.out.println(" nonfin: "  + (nonfin == abc));
    System.out.println("  final: " + (fin == abc));
    System.out.println(" equals? " + fin.equals(nonfin));
}
}

打印

 nonfin: false
  final: true
 equals? true