Lezione di Java 12 – Passaggio di parametri

Indice Lezione PrecedenteLezione Successiva


Il passaggio di parametri in Java avviene sempre per valore, qualsiasi variabile passata ad una procedura questa non verrà modificata. Il passaggio per riferimento in Java non è previsto. Come fare quindi a modificare un oggetto? Semplice:

public class TestPersona {
  public static void main(String[] args){
    Persona a = new Persona();
    System.out.println("Numero: " + a.num); //Stampa 1
    a.setNumero(2);
    System.out.println("Numero: " + a.num); // Stampa 1
    System.out.println("\nNome: " + a.nome); // Stampa Andrea
    a.setNome(a);
    System.out.println("\nNome: " + a.nome); // Stampa Marco
  }
}

class Persona {
  private String nome = "Andrea";
  private int num = 1;
  public void setNumero(int num) {
    num=10; // La modifica avviene solo localmente
    System.out.println("\nNumero: " + num); // Stampa 10
  }
  public void setNome(Persona pers){
    pers.nome="Marco";
  }
}

Compilando ed eseguendo il programma, avremo stampato:

Numero: 1
Numero: 10
Numero: 1
Nome: Andrea
Nome: Marco

perchè? Il passaggio dei parametri avviene per valore come possiamo vedere con la variabile num, la modifica localmente nel metodo setNumero non viene riportata al di fuori del metodo; ma se il parametro passato è di tipo reference, cosa succede? Solo le modifiche al riferimento non verranno salvate, le modifiche all’oggetto si! Come possiamo vedere verrà stampato Marco al posto di Andrea.

Ti piace l’articolo?
Diventa fan su Facebook
Indice Lezione PrecedenteLezione Successiva
Pubblicato in Guide, Guide, Java, Programmazione Taggato con: , , ,
One comment on “Lezione di Java 12 – Passaggio di parametri
  1. Emmanel scrive:

    Attento , vale solo per i tipi primitivi, quando il parametro è un oggetto non primitivo la JVM si comporta diversamente.

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*