V obou případech platí a == b, protože pokud je String vytvořen z literálu, je na něj automaticky voláno intern. Viz javadoc:

"All literal strings and string-valued constant expressions are interned."


Nemelo to byt spis takhle?

String a = "ahoj";
String b = "ahoj";
if (a != b) System.out.println("a different from b"); //mohlo by se vypsat
a = a.intern();
b = b.intern();
if (a == b) System.out.println("a same as b"); //musí se vypsat


Filip Jirsák

Odpovedet emailem