La risposta invece è no.
Quel confronto è valido solo quando gli oggetti String vengono dichiarati nel modo normale:
codice:
String a = "Ciao";
String b = "Ciao";
Quando, invece, le stringhe vengono create con il modo classico(mediante l'uso dell'operatore new) il confronto fallisce.
Fallisce, di solito, anche quando la stringa viene creata tramite l'uso di un metodo di qualche classe perchè quella classe potrebbe restituire un oggetto tramite l'operatore new.
Ecco un esempio:
codice:
String a = new String("Ciao");
String b = new String("Ciao");
if (a == b) System.out.println("Sono uguali");
else System.out.println("Sono diverse");
Questo test FALLISCE perchè gli oggetti sono DIVERSI.
Lo stesso accade, generalmente, quando l'oggetto viene creato sfruttando un metodo di una classe:
codice:
class MiaClasse {
public static String getStringa() {
return new String("Oggetto di MiaClasse");
}
...
}
class MioEsempio {
public static void main(String [] args) {
String a = MiaClasse.getStringa();
String b = MiaClasse.getStringa();
if (a==b) System.out.println("Sono uguali");
else System.out.println("Sono diverse");
}
}
Ciao.