Quindi ho sentito che se ho confrontato 2 stringhe con ==, otterrò solo true se entrambi si riferiscono allo stesso oggetto/istanza. Sono corde. Che dire di Booleans?== verifica la piena uguaglianza in Booleani? - Java
risposta
== verifica l'uguaglianza completa in booleani? - Java
Dipende se si sta parlando di Boolean
s (l'involucro oggetto, di notare la capitale B
) o boolean
s (il primitivo, notare il minuscolo b
). Se stai parlando di Boolean
s (il wrapper dell'oggetto), come con tutti gli oggetti, ==
assegni per identità, non equivalenza. Se stai parlando di boolean
s (primitive), controlla l'equivalenza.
Quindi:
Boolean a, b;
a = new Boolean(false);
b = new Boolean(false);
System.out.println("a == b? " + (a == b)); // "a == b? false", because they're not the same instance
Ma
boolean c, d;
c = false;
d = false;
System.out.println("c == d? " + (c == d)); // "c == d? true", because they're primitives with the same value
stringhe riguardanti:
ho sentito che se paragono 2 stringhe con == poi ho solo la volontà tornare indietro se le stringhe sono identiche e si riferiscono entrambi allo stesso oggetto/istanza ...
Non è davvero una "e": ==
sarà solo verifica se i due String
variabili si riferiscono alla stessa istanza String
. Naturalmente, un'istanza String
può avere solo un set di contenuti, quindi se entrambe le variabili puntano alla stessa istanza, naturalmente i contenuti sono gli stessi ... :-) Il punto chiave è che ==
segnalerà false
per diversoString
istanze anche se hanno gli stessi caratteri nello stesso ordine. Ecco perché usiamo equals
su di loro, non ==
. Le stringhe possono diventare un po 'confuse a causa di intern
ing, che è specifico per le stringhe (non esiste un equivalente per Boolean
, anche se quando si utilizza Boolean.valueOf(boolean)
, si ottiene un oggetto memorizzato nella cache). Si noti inoltre che Java non ha corde primitivi come fa primitivo boolean
, int
, ecc
Quindi, se io uso 'new boolean' per rendere la mia variabile, al contrario di' new Boolean', '==' sarà uguale a 'equals()'? – Bluefire
@Bluefire: non si usa affatto 'new boolean' (in minuscolo). Si usa 'true' o' false' o il risultato di un'operazione di confronto. Penso che ci siano pochissimi casi d'uso in Java moderno per 'Boolean'. –
Quindi per dichiarare un booleano primitivo, devo inserire qualcosa come "boolean myBoolean = true'? – Bluefire
Dipende se si sta parlando di tipi di valore come: int
, boolean
, long
o sui tipi di riferimento: Integer
, Boolean
, Long
. i tipi di valore possono essere confrontati con ==
, i tipi di riferimento devono essere confrontati con equals
.
Se si utilizza un oggetto uguale a quando non è possibile eseguire in cose come questa. (cache VM per le primitive autoboxing)
public static void main(String[] args){
Boolean a = true;
Boolean b = true;
System.out.println(a == b);
a = new Boolean(true);
b = new Boolean(true);
System.out.println(a == b);
}
l'uscita è TRUE e FALSE
questo non sta migliorando la risposta, si prega di aggiungere una risposta solo se migliora le risposte già presentate –
Alla risposta originale manca l'esempio di autoboxing. Mi sono imbattuto nel seguente codice: Opzionale
- 1. valutare valori booleani in Java
- 2. La coda JMS è piena
- 3. Uguaglianza di istanza dell'interfaccia funzionale in java
- 4. ERRORE 1114 (HY000): La tabella è piena
- 5. HashSet Java con criteri di uguaglianza personalizzati?
- 6. String trim in Java, mentre conserva piena parola
- 7. Java Permutazione e combinazione dei flag booleani
- 8. come scrivere un metodo di uguaglianza in Java
- 9. controllo uguaglianza oggetto di riferimento utilizzando == (in Java)
- 10. uguaglianza in javascript
- 11. non è stato possibile raggiungere la piena precisione in 'qbeta'
- 12. uguaglianza strutturale in F #
- 13. Oggetto uguaglianza in dattiloscritto
- 14. Uguaglianza puntatore in Haskell?
- 15. Perché la piena pigrizia è un'ottimizzazione predefinita?
- 16. Quando si verifica la condizione "Codice non raggiungibile" in Java?
- 17. Come si verifica la disponibilità di Internet in Java?
- 18. Verifica la quantità di memoria bufferizzataImage in java utilizza?
- 19. ThreadPoolExecutor Block quando la coda è piena?
- 20. Tipo di riferimento senza la piena namespace
- 21. Metodi booleani in Ruby?
- 22. Uguaglianza GetHashCode
- 23. ArrayList uguaglianza JUnit testing
- 24. incolla da Excel in C# app, conservando la piena precisione
- 25. Ember impaginazione piena esempio
- 26. uguaglianza String con la gestione nullo
- 27. Quando si verifica ERROR in Java?
- 28. Facendo PIENA Messaggio eccezione
- 29. Manipolare in stringa di booleani
- 30. Cambia valori booleani?
Come potrebbero le corde si riferiscono alla stessa istanza e non essere identici? – Pablo
No, ciò che intendo è se sono identici ma * non * si riferiscono alla stessa istanza, == restituisce false. – Bluefire
Si prega di leggere qualsiasi cosa prima di postare, e non iniziare con ho sentito qualcosa da qualche parte. – stanwise