Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683

    [JAVA] controllare che una StringBuffer sia inizializzata

    ciao a tutti! sto facendo un programmino e al suo interno c'è questo frammento di codice che riporto qui sotto.
    Non capisco perchè non mi entra nel if!
    ho provato a debuggarlo e al momento del if la variabile prov1 vale "vuota"
    poi altra cosa, perchè comunque questo codice era un tentativo poco elegante per controllare che la varibile op1 StringBuffer fosse inizializzata, qual'è il modo giusto?
    grazie

    codice:
    final StringBuffer op1 = new StringBuffer().append("vuota");
    String prov1=op1.toString();
    if(prov1=="vuota")
    {
    	//...
    }

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Non ho capito cosa ti serve...se tu fai
    codice:
    final StringBuffer op1 = new StringBuffer();
    CODICE
    op1 è sicuramente una costante che contiene un oggetto "pulito" di tipo StringBuffer.
    In ogni caso, per fare l'uguaglianza tra stringhe dovresti usare http://download.oracle.com/javase/1....lang.Object%29

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    infatti con equals ora va! come mai?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da iacoposk8
    infatti con equals ora va! come mai?
    Perchè l'uguaglianza fatta con l'operatore == confronta i reference (gli indirizzi di memoria), non il contenuto dell'oggetto (le stringhe sono oggetti).

    equals(), invece, è opportunamente ridefinito nella classe String per confrontare il contenuto dei due oggetti.

    Questo vale in generale per tutti gli oggetti: essi si confrontano con equals() non con l'operatore ==.


    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
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da iacoposk8
    infatti con equals ora va! come mai?
    Tra oggetti == confronta solo il riferimento. Tradotto: restituisce true se e solo se sono lo stesso oggetto (inteso come "la stessa istanza"). equals invece è un metodo che permette di verificare l'uguaglianza interna. E' un metodo ereditato da Object e ogni classe dovrebbe ridefinirlo (String lo fa infatti).
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6

    Re: [JAVA] controllare che una StringBuffer sia inizializzata

    Originariamente inviato da iacoposk8
    codice:
    final StringBuffer op1 = new StringBuffer().append("vuota");
    String prov1=op1.toString();
    if(prov1=="vuota")
    {
    	//...
    }
    Se sai con certezza che nel momento in cui vai a fare questo genere di controllo op1 è stata sicuramente istanziata allora puoi benissimo fare:
    codice:
    ..
    if(op1.length() == 0){
       ..
    }
    il metodo length() restituisce il numero di caratteri aggiunti al buffer; quindi non hai bisogno di appendere "vuota".

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.