Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    passaggio parametri per reference non va

    codice:
        public static void change(String myS){
            myS = "sadassa";
        }
    nel main:

    codice:
            String s2 = "cadsa";
            change(s2);
            System.out.print(s2);
    la print mi stampa il primo valore di s2 senza che la modifica che effettuo in change abbia effetto.

    mi spiegate perchè? String è un oggetto quindi dovrebbe essere passato il puntatore.

    grazie

  2. #2
    In java puoi passare parametri per valore non per riferimento.

    http://www.ba.infn.it/~zito/jsem/parametri.html

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123

    Re: passaggio parametri per reference non va

    Originariamente inviato da xnavigator
    codice:
        public static void change(String myS){
            myS = "sadassa";
        }
    nel main:

    codice:
            String s2 = "cadsa";
            change(s2);
            System.out.print(s2);
    la print mi stampa il primo valore di s2 senza che la modifica che effettuo in change abbia effetto.

    mi spiegate perchè? String è un oggetto quindi dovrebbe essere passato il puntatore.

    grazie
    Il perchè è molto semplice.

    Un nuovo assegnamento a myS causa la creazione di un nuovo oggetto.
    Insomma, in poche parole, con ogni azione tu non stai modificando il valore di quella variabile (come accade per i tipri primitivi (int, byte,long,...)) ma Java crea un nuovo oggetto e ne restituisce la modifica.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123

    Re: Re: passaggio parametri per reference non va

    @VincenzoTheBest: Gli oggetti però vengono passati per riferimento (una copia dell'"indirizzo" dell'oggetto).

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Re: passaggio parametri per reference non va

    Originariamente inviato da Patrick Jane
    @VincenzoTheBest: Gli oggetti però vengono passati per riferimento (una copia dell'"indirizzo" dell'oggetto).
    Vengono passati per valore anche quelli, infatti una funzione riceve una copia del riferimento e non il riferimento.
    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: Re: Re: Re: passaggio parametri per reference non va

    Originariamente inviato da Alex'87
    Vengono passati per valore anche quelli, infatti una funzione riceve una copia del riferimento e non il riferimento.
    Infatti.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123

    Re: Re: Re: Re: passaggio parametri per reference non va

    Originariamente inviato da Alex'87
    Vengono passati per valore anche quelli, infatti una funzione riceve una copia del riferimento e non il riferimento.
    Sisi, infatti è quello che ho scritto! ^^ Quello che intendevo dire è che ricevendo una copia del riferimento, ogni modifica viene riflessa sulla "copia originale", mentre questo non accade per i tipi semplici.

  8. #8
    e se io nel metodo volessi modificare l'oggetto che ho passato?


    c'è un modo per farlo?

  9. #9
    Originariamente inviato da xnavigator
    e se io nel metodo volessi modificare l'oggetto che ho passato?
    c'è un modo per farlo?
    Si. Ti conviene creare una classe per quell'oggetto e definire i metodi che modifichino il suo stato.

  10. #10
    Originariamente inviato da VincenzoTheBest
    Si. Ti conviene creare una classe per quell'oggetto e definire i metodi che modifichino il suo stato.
    no mi serve di farlo da un'altra classe

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.