Sono String, ovviamente. Ma la questione è che le stringhe "literal" nel sorgente vengono messe nel constant-pool mentre gli oggetti String degli argomenti sono istanziati a runtime. Quindi sono oggetti distinti dalle stringhe literal, con reference differenti (e == su basa solo sui reference, non sul contenuto degli oggetti!).Originariamente inviato da nourdine
Domanda teorica che forse spiega il mio problema: ma i parametri passati da linea di comando di che tipo sono? String, int??
String a = "aaa";
String b = new String("aaa");
a == b è false;
Hai 2 soluzioni:
a) Usare equals() e non ==
b) "internare" la stringa dell'argomento:
String action = args[0].intern();
e quindi puoi usare ==, perché intern() fornisce il reference ad una stringa nel constant-pool (e se non è presente la inserisce nel pool).

Rispondi quotando