Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    97

    [Java] confronto tra stringhe

    umm come faccio ad inserire un confronto tra stringhe in un'espressione condizionale?

    Ho colonna che è un parametro di tipo stringa:

    codice:
    String colonna
    e vorrei fare in IF quando colonna è uguale a certe stringhe. ll codice così va bene? :

    codice:
    if (colonna == "nome") {...}

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    97
    mm ho risolto così:

    codice:
     String nome = "nome";
    ...
    if (colonna.equals(nome))
    Devo usare l'operatore equals perchè Java non consente l'utillizzo di == per i tipi Stringa. Certo che i manuali non sono tropo esaustivi,visto la quantità di domande che ho trovato in giro su questo argomento..

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da _SC_
    Devo usare l'operatore equals
    equals() non è un operatore .... è un metodo.

    Originariamente inviato da _SC_
    perchè Java non consente l'utillizzo di == per i tipi Stringa.
    Certo che Java consente l'utilizzo dell'operatore == per String e in generale per qualunque altro tipo di reference!! Ma l'operatore == si basa solo sul confronto dei due reference, non sul contenuto degli oggetti ... vuol dire che == ritorna true solo ed esclusivamente se i due reference sono uguali e cioè se fanno riferimento allo stesso oggetto.

    String a = new String ("pippo");
    String b = new String ("pippo");
    System.out.println (a == b);

    stampa "false" perché i due reference a e b fanno riferimento ad oggetti diversi anche se hanno lo stesso "contenuto".

    Originariamente inviato da _SC_
    Certo che i manuali non sono tropo esaustivi
    Dipende quali manuali ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    97
    Certo che Java consente l'utilizzo dell'operatore == per String e in generale per qualunque altro tipo di reference!!
    se ho capito bene l'operatore == funziona solo se i puntatori puntano alla stessa precisa locazione di memoria?
    E invece il metodo equals da dove spunta? E' nel pacchetto caricato di default?

    Dipende quali manuali ....
    Si ovvio. maledivo il mio principalmente

    grazie della pazienza.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quando si parla di metodi ci si riferisce sempre ad una classe. La classe può essere inclusa in un package o meno.

    Il metodo equals(), in ogni caso, è un metodo della classe Object, che quindi è posseduto da tutti gli oggetti, visto che tutti gli oggetti estendono (o, di conseguenza, derivano da) Object per default.

    Per il discorso delle uguaglianze, prova questo codice:
    codice:
    public class Prova {
       public static void main(String[] args) {
          String a = new String("pippo");
          String b = new String("pippo");
          String c = a;
    
          System.out.println("a == b --> " + (a == b));
          System.out.println("b == c --> " + (b == c));
          System.out.println("a == c --> " + (a == c));
    
          System.out.println("a.equals(b) --> " + (a.equals(b)));
          System.out.println("b.equals(c) --> " + (b.equals(c)));
          System.out.println("a.equals(c) --> " + (a.equals(c)));
       }
    }
    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

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da _SC_
    se ho capito bene l'operatore == funziona solo se i puntatori puntano alla stessa precisa locazione di memoria?
    Sì, è così .... anche se in Java non si parla di "puntatori".

    Originariamente inviato da _SC_
    E invece il metodo equals da dove spunta?
    equals() è un metodo definito nella classe Object (il "padre" di tutti gli oggetti). equals() di Object, non potendo fare altrimenti, utilizza == per confrontare i due oggetti. Quando si creano delle classi, è quindi bene fare l'override di equals() cioè ridefinire il suo comportamento per far sì che venga confrontato il contenuto degli oggetti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.