Není to pravda - používaní literálů a konstrukce new String("asd") vede k jiným výsledkům a i v chování.
public class Pokus {
public static void main(String[] args) {
String a = "asdf";
if (a == new Hu().x) {
System.out.println("true a hotovo");
}
}
}
class Hu {
String x = "asdf";
}
Toto by v případě použití konstrukce new mělo jiný výsledek.