CompareTo versus è Uguale! confronta le stringhe o oggetti?

Veloce domanda

Sto confrontando una Stringa, devo utilizzare è pari o compareTo?
perché io se è uguale a distinguere 2 oggetti di tipo String
e non solo per il loro valore…

che può causare problemi, in quanto:

String a = new String("lol");
String b = new String("lol");

sono due oggetti diversi, anche se hanno lo stesso valore?

Che cosa è esattamente la differenza tra pari, e compareTo implementazioni in termini di prestazioni e precisione?

InformationsquelleAutor Navy Seal | 2012-05-27

 

3 Replies
  1. 11

    Prima di tutto == confronta i riferimenti per vedere se i due oggetti sono uguali (così == è sull’oggetto).

    Poi String.equals() verificare l’uguaglianza dei contenuti di due stringhe mentre String.compareTo() cercare la differenza del contenuto di due stringhe.

    In modo che le due prove seguenti sono equivalenti:

    String str = "my string";
    
    if ( str.equals("my second string")) {/*...*/}
    if ( str.compareTo("my second string")==0) {/*...*/}

    Ma, dal momento che String.equals sta facendo un controllo di riferimento prima di tutto, è sicuro se usato contro null, mentre String.compareTo si getta un NullPointerException:

    String str = "my string";
    
    if ( str.equals(null)) {/* false */}
    if ( str.compareTo(null) {/* NullPointerException */}
  2. 12

    Hai fatto a provarlo?

    String a = new String("foo");
    String b = new String("foo");
    
    System.out.println(a == b); //false
    System.out.println(a.equals(b)); //true
    System.out.println(a.compareTo(b)); //0
    • così che cosa è la differenza? tra utilizzando uguale e compareTo?
    • hai letto il javadoc?
    • sì, ma Im confondere… Come faccio a confrontare se due oggetti Stringhe sono diverse?
    • si utilizza confrontare per saperne di ordine tra gli elementi, è uguale per determinare se sono più o meno uguali per il loro contenuto. == viene utilizzato per verificare se il riferimenti scegliere lo stesso oggetto. Tutto questo è molto facile trovare nell’api!
    • href=”http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Oggetto)” >equals test i valori di due oggetti per vedere se sono la stessa cosa. compareTo test i valori di due oggetti per vedere se uno è “superiore” all’altro. In caso di Strings, confronta l’ordine lessicografico dei personaggi.
    • questo è uno di quei dubbi dove tutto sembra lo stesso, ma con piccole differenze materia
    • sì, questa è una di quelle situazioni in cui è necessario rallentare e … PENSO … 🙂

  3. -2
        String a = new String("lol");
        String b = new String("lol");
    
        System.out.println(a == b); //false. It checks references of both sides operands and we have created objects using new operator so references would not be same and result would be false.
        System.out.println(a.equals(b)); //true checks Values and values are same
        System.out.println(a.compareTo(b)); // checks for less than, greater than or equals. Mainly used in sortings.

Lascia un commento