Java OCAJP7: modifica di oggetti StringBuilder

Il comportamento degli oggetti della classe StringBuilder è diverso da quello degli oggetti String per quanto riguarda la loro modifica. Gli oggetti String sono immutabili, per cui ogni volta che si esegue un’operazione di modifica su di essi, viene creato un nuovo oggetto con il nuovo valore, mentre quello originale rimane inalterato. Sugli oggetti StringBuilder invece le modifiche sono sempre effettuate sull’oggetto originale e, se il valore di ritorno dell’esecuzione del metodo viene assegnato ad un’altra reference, essa punter‡ allo stesso oggetto con lo stesso valore.

	
public class StringBuilderTest {

   public static void main(final String[] args) {

        String s = "Stringa di esempio";
        s.substring(0,8);        // se non riassegno il valore di ritorno perdo il risultato del substring
        System.out.println(s);   // il valore originale di s non viene modificato

        String s2 = s.substring(0,8);   // in questo caso riassegno il risultato

        System.out.println(s);          // il valore originale di s non viene modificato
        System.out.println(s2);         // s2 è un nuovo oggetto ed ha il nuovo valore


        StringBuilder sb1 = new StringBuilder("aaa");

        sb1.append(" bbb");               // Anche senza l'assegnazione del valore di ritorno
        System.out.println("1) " + sb1);  // sull'oggetto StringBuilder le modifiche vengono effettivamente fatte
        sb1.insert(3, "xxx");
        System.out.println("2) " + sb1);
        sb1.reverse();
        System.out.println("3) " + sb1);

        StringBuilder sb2 = sb1.append(" yyyy");  // In questo caso riassegno il valore ritornato
        System.out.println("sb2) " + sb2);        // La modifica viene effettivamente fatta anche sull'originale sb1
        System.out.println("4) " + sb1);          // sb2 non è un nuovo oggetto ed ha lo stesso valore di sb1

    }

}

OUTPUT

Stringa di esempio
Stringa di esempio
Stringa 
1) aaa bbb
2) aaaxxx bbb
3) bbb xxxaaa
sb2) bbb xxxaaa yyyy
4) bbb xxxaaa yyyy
This entry was posted in $1$s. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *