25/04/13 11:45
bruno.demarini
Ciao a tutti, vorrei sottoporvi questo listato che ho scritto io:
L'output che ottengo, prevedibilmente, è Le stringhe occhio e OCchio hanno lo stesso valore".
Se invece cambio il listato in questo modo, facendo coincidere i valori delle stringhe:
Ottengo, stranamente, in output:
Le stringhe occhio e occhio sono lo stesso oggetto
Le stringhe occhio e occhio hanno lo stesso valore
Se invece uso due stringhe diverse ("occhio" e "dente" giustamente non viene mostrato nulla in output.
La domanda è: perché se uso l'assegnazione nomevariabile = "valore" e se assegno sia ad a sia a b lo stesso valore, allora li considera come lo stesso oggetto (riferimento alla medesima locazione di memoria) ?
Ho anche notato che se uso invece a = new String("occhio" e b = new String("occhio", il comportamento è diverso, cioé quello corretto, in quanto li considera come oggetti diversi, ma con ugual valore.
GRAZIE!!
public static void main(String args[]){ String a, b; a = "occhio"; b = "OCchio"; if (b == a) System.out.println("Le stringhe " + a + " e " + b + " sono lo stesso oggetto"); if (b.equalsIgnoreCase(a)) System.out.println("Le stringhe " + a + " e " + b + " hanno lo stesso valore"); }
L'output che ottengo, prevedibilmente, è Le stringhe occhio e OCchio hanno lo stesso valore".
Se invece cambio il listato in questo modo, facendo coincidere i valori delle stringhe:
public static void main(String args[]){ String a, b; a = "occhio"; b = "occhio"; if (b == a) System.out.println("Le stringhe " + a + " e " + b + " sono lo stesso oggetto"); if (b.equalsIgnoreCase(a)) System.out.println("Le stringhe " + a + " e " + b + " hanno lo stesso valore"); }
Ottengo, stranamente, in output:
Le stringhe occhio e occhio sono lo stesso oggetto
Le stringhe occhio e occhio hanno lo stesso valore
Se invece uso due stringhe diverse ("occhio" e "dente" giustamente non viene mostrato nulla in output.
La domanda è: perché se uso l'assegnazione nomevariabile = "valore" e se assegno sia ad a sia a b lo stesso valore, allora li considera come lo stesso oggetto (riferimento alla medesima locazione di memoria) ?
Ho anche notato che se uso invece a = new String("occhio" e b = new String("occhio", il comportamento è diverso, cioé quello corretto, in quanto li considera come oggetti diversi, ma con ugual valore.
GRAZIE!!
Ultima modifica effettuata da bruno.demarini 28/04/13 21:49
aaa