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在比较时是相同的?
答案 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