|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 97
|
[JAVA] - uguaglianza tra stringhe
buongiorno,
ho un problema su una uguaglianza tra stringhe all'interno di un if. ovvero, date 2 stringhe, se queste sono uguali, allora devo fare una certa serie di operazioni. banalmente: Codice:
if (stringa1== stringa2)
{
fai quello che devi fare;
}
non so se può essere questo il problema, ma se "apro" le variabili, sempre col debug di eclipse voglio dire, vedo che i campi count, hash, offset e value corrispondono, l'unica cosa che cambia è la id della variabile, ma questo mi sembra ovvio... in cosa sbaglio? grazie mille a chiunque voglia rispondere! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Così confronti i riferimenti ai due oggetti. Devi usare il metodo equals.
Codice:
if(stringa1.equals(stringa2))
// fai qualcosa
|
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Oct 2008
Messaggi: 97
|
Quote:
ma cioè, per curiosità, cosa confrontava con "=="? per riferimenti ai due oggetti vuoi dire gli indirizzi in memoria? ma questo vale solo per le stringhe? o anche per variabili intere devo usare il metodo equals? grazie ancora, ciao! |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Per tutti i tipi primitivi usi ==. Per gli oggetti, come le stringe appunto, c'è il metodo equals, che è ereditato da Object e ridefinito. Sì, gli indirizzi.
Codice:
String a = "abc"; String b = a; if(a == b) |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 97
|
ok, ho capito!
grazie ancora e buone feste, a te e a tutti del forum! |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Figurati, altrettanto
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Feb 2009
Messaggi: 700
|
Quote:
Se devi confrontare 2 tipi primitivi allora usa l'OPERATORE == Se invece devi confrontare 2 oggetti (di qualsiasi tipo) devi usare il METODO equals() Perchè? Beh semplicemente perchè se fai come hai fatto te: Codice:
if (stringa1== stringa2)
{
fai quello che devi fare;
}
NB: se crei te un tuo tipo di oggetto dovresti anche implementare il metodo equals() opportuno per confrontare 2 oggetti di quel tipo. Per esempio: ti definisci un tuo tipo di oggetti Rettangolo che come proprietà ad esempio ha solamente la lunghezza dei 2 lati. Allora magari dovresti ridefinire un tuo metodo equals() (facendo l'ovverride del supertipo) in cui confronti 2 oggetti Rettangolo vedendo se le lunghezze dei lati dell'oggetto ricevente e del parametro sono uguali) Spero di averti chiarito il concetto :-) Ciao Andrea |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:54.




















