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

    Corretto funzionamento StringBuilder piccolo chiarimento

    Buonasera, il seguente metodo fa parte di una classe estesa e deve ritornare una determinata stringa.
    Detto questo, non penso di aver ben compreso il funzionamento di StringBuilder....
    Quello che ho capito è che :


    • con StringBuilder s =new StringBuilder() ==> creo una nuova stringa s;
    • con s.append cambio la stringa;
    • e alla fine quando dichiaro s.ToString(); ==> mi riferisco al classico ToString() delle API java e non ad un ToString particolare che posso aver implementato in precedenza. perchè questo?


    è questo il reale comportamento della classe StringBuilder?

    codice:
    @Override
        public String getDescrizione(){
            StringBuilder s = new StringBuilder();
            if (!this.getPartita().getGiocatore().getBorsa().hasAttrezzo(this.direzioneChiave)){
                s.append("Qui qualcosa non va, le porte non sono porte");
            }else{
                s.append(super.getNome());
                s.append("\nUscite: ");
                for (String direzione : super.getDirezioni())
                    if (direzione!=null){
                        s.append(" " + direzione);    
                }
                s.append("\nAttrezzi nella stanza: ");
                for (Attrezzo attrezzo : this.getAttrezzi()) {
                    if (attrezzo != null)    
                        s.append(attrezzo.toString()+" ");
                }
            }
            return s.toString();
        }
    Grazie in anticipo e buon primo maggio!!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da aleRomatre Visualizza il messaggio
    con StringBuilder s =new StringBuilder() ==> creo una nuova stringa s;
    Non nel senso di String (java.lang.String). StringBuilder (insieme a StringBuffer) è semplicemente un "costruttore" di stringhe. Rappresenta una sequenza "mutabile" di caratteri. Al contrario di String che invece è immutabile.

    Quote Originariamente inviata da aleRomatre Visualizza il messaggio
    con s.append cambio la stringa;
    Sì, e ci sono svariati altri metodi per mutare la sequenza di caratteri rappresentata nel StringBuilder/StringBuffer.

    Quote Originariamente inviata da aleRomatre Visualizza il messaggio
    e alla fine quando dichiaro s.ToString(); ==> mi riferisco al classico ToString() delle API java e non ad un ToString particolare che posso aver implementato in precedenza. perchè questo?
    Non ho ben capito il tuo dubbio .... il toString() di StringBuilder è la ridefinizione (override) del toString() di Object. Ovviamente la implementazione in StringBuilder è fatta per restituire un String "finale" con la sequenza di caratteri rappresentata da StringBuilder in quel preciso momento.


    Quote Originariamente inviata da aleRomatre Visualizza il messaggio
    il seguente metodo fa parte di una classe estesa e deve ritornare una determinata stringa.
    Il codice che hai postato è semplicemente la composizione dinamica di una stringa basandosi sul risultato di tutti gli append fatti a fronte di cicli/condizioni e quant'altro.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie mille sei stato chiarissimo!

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    StringBuilder si usa per evitare l'inutile creazione di stringhe temporanee (cosa che avviene usando l'operatore +)

    Fare quindi s.append(" "+ direzione); è controproducente, andrebbe fatta una cosa del genere:

    s.append(" ");
    s.append(direzione);
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.