Mais conteúdo relacionado Mais de Ludimila Monjardim Casagrande (18) POO - 15 - Passagem de Argumentos2. Passagem de Argumentos
Em Java os argumentos só são passados por
valor, isto é, não existe passagem de
argumentos por referência.
Quando um argumento é passado para um
método, na prática o que é passado é uma
cópia do valor do argumento.
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 2
3. Passagem de Argumentos
Considere o seguinte método:
public void incrementa5(int numero) {
numero += 5;
}
Uma cópia do valor de x é
int x = 0; passada como argumento
incrementa5(x); para o método.
System.out.println(“Agora x é: ” + x);
Qual é o resultado impresso na tela?
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 3
4. Passagem de Argumentos
Nesse caso, para que o valor da variável x
realmente seja alterado, o método deve retornar
seu resultado e esse resultado deve ser atribuído à
variável x.
public int incrementa5(int numero){
return numero += 5;
}
int x = 0;
x = incrementa5(x);
System.out.println(“Agora x é: ” + x);
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 4
5. Passagem de Argumentos
Quando um objeto é passado como um
argumento de um método, na prática o valor do
argumento é uma cópia da referência para esse
objeto.
Fazendo uso dessa referência dentro do
método, é possível alterar o conteúdo do objeto
referenciado, mas a referência original em si
nunca será modificada pelo método.
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 5
6. Passagem de Argumentos
public class Cor { Qual é o resultado impresso na tela?
public String cor;
public Cor(String c){
this.cor = c;
}
2 public static void substitua(Cor novaCor){
3 novaCor = new Cor("Verde");
}
public String getCor(){
return cor;
}
public static void main(String[] args) {
Cor c1;
1 c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor());
}
}
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 6
7. Passagem de Argumentos
public class Cor { Qual é o resultado impresso na tela?
public String cor;
public Cor(String c){ c1 0x0123
this.cor = c; Passo 1:
} cor Azul
2 public static void substitua(Cor novaCor){
3 novaCor = new Cor("Verde");
}
public String getCor(){
return cor;
}
public static void main(String[] args) {
Cor c1;
1 c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor());
}
}
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 7
8. Passagem de Argumentos
public class Cor { Qual é o resultado impresso na tela?
public String cor;
public Cor(String c){ c1 0x0123
this.cor = c; Passo 1:
} cor Azul
2 public static void substitua(Cor novaCor){ Passo 2:
3 novaCor = new Cor("Verde");
} novaCor 0x0123
public String getCor(){
return cor;
}
public static void main(String[] args) {
Cor c1;
1 c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor());
}
}
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 8
9. Passagem de Argumentos
public class Cor { Qual é o resultado impresso na tela?
public String cor;
public Cor(String c){ c1 0x0123
this.cor = c; Passo 1:
} cor Azul
2 public static void substitua(Cor novaCor){ Passo 2:
3 novaCor = new Cor("Verde");
} novaCor 0x0456
public String getCor(){
return cor; Passo 3:
} cor Verde
public static void main(String[] args) {
Cor c1;
1 c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor());
}
}
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 9
10. Passagem de Argumentos
public class Cor { Qual é o resultado impresso na tela?
public String cor;
public Cor(String c){
this.cor = c;
}
2 public static void substitua(Cor novaCor){
3 novaCor.cor = "Verde";
}
public String getCor(){
return cor;
}
public static void main(String[] args) {
Cor c1;
1 c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor());
}
}
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 10
11. Passagem de Argumentos
public class Cor { Qual é o resultado impresso na tela?
public String cor;
public Cor(String c){ Passo 1: c1 0x0123
this.cor = c;
} cor Azul
2 public static void substitua(Cor novaCor){
3 novaCor.cor = "Verde";
}
public String getCor(){
return cor;
}
public static void main(String[] args) {
Cor c1;
1 c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor());
}
}
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 11
12. Passagem de Argumentos
public class Cor { Qual é o resultado impresso na tela?
public String cor;
public Cor(String c){ Passo 1: c1 0x0123
this.cor = c;
} cor Azul
2 public static void substitua(Cor novaCor){
3 novaCor.cor = "Verde"; Passo 2:
}
novaCor 0x0123
public String getCor(){
return cor;
}
public static void main(String[] args) {
Cor c1;
1 c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor());
}
}
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 12
13. Passagem de Argumentos
public class Cor { Qual é o resultado impresso na tela?
public String cor;
public Cor(String c){ Passo 1: c1 0x0123
this.cor = c;
} Passo 3: cor Verde
2 public static void substitua(Cor novaCor){
3 novaCor.cor = "Verde"; Passo 2:
}
novaCor 0x0123
public String getCor(){
return cor;
}
public static void main(String[] args) {
Cor c1;
1 c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor());
}
}
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 13