class returntest
{
public static void main(String...args)
{
String name1 = "Test";
String s = new String("Test");
StringBuilder sb = new StringBuilder("Test");
System.out.println(name1.equals(sb)); //Line 1
System.out.println(name1.equals(s)); //Line 2
System.out.println(s.equals(sb)); // Line 3
System.out.println(s.equals(name1)); //Line 4
}
}
Ниже приведен вывод
false
true
false
true
Строка 1 возвращает, а строка 3 возвращает false.
Я не понимаю, почему компилятор не считает, что "name1" и "sb" содержат одно и то же значение.
Точно так же компилятор не считает, что «s» и «sb» содержат одну и ту же строку (оба не являются примитивами).
Может кто-нибудь объяснить вывод line1 и line3?