Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15
  1. #11
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    mi sono dimenticato di chiedere una cosa: la stringa a che ho utilizzato è mutabile? cioè: posso fare un copia-incolla del codice cambiando il valore di a per ogni domanda? o devo cambiare ogni volta variabile?

  2. #12
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da John360
    la stringa a che ho utilizzato è mutabile? cioè: posso fare un copia-incolla del codice cambiando il valore di a per ogni domanda? o devo cambiare ogni volta variabile?
    La variabile a che hai usato è mutabile (non è final) ... la variabile! Non lo "stato" dell'oggetto String a cui (se non null) fa riferimento.
    Insomma ad a puoi assegnare nel corso del tempo quante stringhe vuoi.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #13
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    ok, e allora(scusate l'OT) a che serve StringBuffer??

  4. #14
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da John360
    ok, e allora(scusate l'OT) a che serve StringBuffer??
    StringBuffer (e StringBuilder da Java 5) sono classi per gestire un "buffer" di caratteri mutabile, cioè che è modificabile in senso di valori e quantità dei caratteri.

    Ma mi sa che ti stai confondendo. Non confondere la "mutabilità" di una variabile con la "mutabilità" dello stato di un oggetto.

    int a;
    a = 10;
    a = 20;
    a = 30;

    String s;
    s = "aaa";
    s = "bbb";
    s = "ccc";

    In tutti questi 6 casi hai cambiato il valore della variabile. Per gli int è chiaro quale è il valore (è il numero stesso assegnato). Per String e qualunque altro tipo "reference", la variabile contiene solo un riferimento all'oggetto.
    Vedilo come se ci fosse un "filo" che collega la variabile all'oggetto.

    s = "aaa";

    vuol dire che c'è questo ipotetico filo che collega la variabile s all'oggetto String "aaa".
    Facendo:

    s = "bbb";

    viene semplicemente "tagliato" il filo che collega s ad "aaa" e viene tirato un filo tra s e "bbb".
    Ma lo stato di questi oggetti String "aaa" e "bbb" NON è cambiato affatto.

    Se invece avessi:

    final String s = "aaa";
    s = "bbb"; // Errore di compilazione!!!

    Qui è un errore di compilazione. La variabile è final, può essere inizializzata ma non può cambiare il suo valore, cioè non può fare riferimento ad un altro oggetto.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #15
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    capito tutto! grazie mille della spiegazione!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.