class EqualsTest {
public static void main(String[] arguments) {
String str1, str2;
str1 = "Free the bound periodicals.";
str2 = str1; System.out.println("String1: " + str1);
System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2)); str2 = new String(str1); System.out.println("String1: " + str1);
System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2));
System.out.println("Same value? " + str1.equals(str2));
}
}
答案是String1: Free the bound periodicals.
String2: Free the bound periodicals.
Same object? true
String1: Free the bound periodicals.
String2: Free the bound periodicals.
Same object? false
Same value? true
我不明白后面两个为什么是一个FALSE,一个为TRUE,知道者,帮我解释下
public static void main(String[] arguments) {
String str1, str2;
str1 = "Free the bound periodicals.";
str2 = str1; System.out.println("String1: " + str1);
System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2)); str2 = new String(str1); System.out.println("String1: " + str1);
System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2));
System.out.println("Same value? " + str1.equals(str2));
}
}
答案是String1: Free the bound periodicals.
String2: Free the bound periodicals.
Same object? true
String1: Free the bound periodicals.
String2: Free the bound periodicals.
Same object? false
Same value? true
我不明白后面两个为什么是一个FALSE,一个为TRUE,知道者,帮我解释下
str2 = str1;的话两者指向同一片内存
str2 = new String(str1);的话两者指向两片不同的内存
对象内容的比较则是用equal方法
逻辑运算符“==”是判断两个引用是否是同一个对象。也就是他们所指向的地址是否相同。
而"equals"方法是比较两个字符串的内容是否相同。
equals 是判断其值是否相同
书上说得很清楚,好好想想
对于引用类型==是判断其引用地址是否相同;而equals是判断其值的。
强烈建议find
google
看书