Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    metodo equals di String - JAVA

    Il metodo(dell'oggetto String) boolean equals(Object o) restituisce true se la stringa risulta uguale all'oggetto passato come parametro.
    Ma quell'oggetto o(passato come parametro) deve essere per forza una stringa???
    Quale potrebbe essere un caso in cui non è una stringa?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Non necessariamente. Il metodo equals() è definito per tutti gli Object e riceve, come parametro, un Object. Quindi tu puoi passargli qualsiasi tipo di oggetto.

    Esempio:
    codice:
    String miaStringa = "Ciao";
    Object mioOggetto = "Ciao";
    
    System.out.println( miaStringa.equals(mioOggetto) );
    Questo stampa true


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    ok, quindi è necessario cmq che ad un oggetto gli si possa assegnare una stringa perchè avvenga il confronto, no?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    No... io posso confrontare anche oggetti di tipo diverso. Ovviamente perchè il test abbia successo è necessario che i due oggetti siano confrontabili e abbiano lo stesso significato.

    Esempio:
    codice:
    JPanel jp = new JPanel();
    JPanel nuovo = new JPanel();
    
    System.out.println( jp.equals(nuovo) );
    Questo ritorna false perchè gli oggetti complessi, al loro interno, sono rappresentati diversamente (ovvero ci sono degli attributi diversi, come il Nome interno).


    Ma a priori potrebbero anche essere uguali.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    si ma se confronti
    String miaStringa = "Ciao";
    con un altro oggetto perchè venga restituito true è necessario che a quell'altro oggetto si possa assegnare una stringa "Ciao", no?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Chissa se le API della classe String ti aiutano a capire...
    codice:
    equals
    
    public boolean equals(Object anObject)
    
        Compares this string to the specified object. The result is true if and only if the argument is not null and is a 
    String object that represents the same sequence of 
    characters as this object.
    
        Overrides:
            equals in class Object
    
        Parameters:
            anObject - the object to compare this String against. 
        Returns:
            true if the String are equal; false otherwise.
        See Also:
            compareTo(java.lang.String), equalsIgnoreCase(java.lang.String)
    Slack? Smack!

  7. #7
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Questo ritorna false perchè gli oggetti complessi, al loro interno, sono rappresentati diversamente (ovvero ci sono degli attributi diversi, come il Nome interno).

    Non è proprio così...

    La versione di equals del metodo object ritorna true se i due riferimenti puntano allo stesso oggetto

    Confronta qui

    Linux user number 403381

    Stop TCPA!

  8. #8
    ora ho 0 tempo per leggere ma al massimo nel week ned leggo tutto e poi scasso ancora :zamm: :zamm: :zamm:

    grazie

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Originariamente inviato da Fox82
    Non è proprio così...

    La versione di equals del metodo object ritorna true se i due riferimenti puntano allo stesso oggetto

    Confronta qui

    Effettivamente ho detto una cazzata... perchè ero proiettato all'override del metodo stesso (come accade, appunto, con le stringhe).



    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.