SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
61 Curso de Java
Passagem de
parâmetros por
valor e referência
Exemplo 1
private static void testePassagemValorReferencia(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato = new Contato("Contato 2", "2345-6789", "contato2@email.com");
}
private static void testePassagemValorReferencia(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato = new Contato("Contato 2", "2345-6789", "contato2@email.com");
}
Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com");
int valor = 10;
System.out.println(contato);
System.out.println(valor);
testePassagemValorReferencia(valor, contato);
System.out.println(contato);
System.out.println(valor);
private static void testePassagemValorReferencia(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato = new Contato("Contato 2", "2345-6789", "contato2@email.com");
}
Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com");
int valor = 10;
System.out.println(contato);
System.out.println(valor);
testePassagemValorReferencia(valor, contato);
System.out.println(contato);
System.out.println(valor);
Qual a saída das variáveis valor e contato?
Exemplo 2
private static void testePassagemValorReferencia2(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato.setNome("Contato"+novoValor);
}
private static void testePassagemValorReferencia2(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato.setNome("Contato"+novoValor);
}
Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com");
int valor = 10;
System.out.println(contato);
System.out.println(valor);
testePassagemValorReferencia(valor, contato);
System.out.println(contato);
System.out.println(valor);
private static void testePassagemValorReferencia2(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato.setNome("Contato"+novoValor);
}
Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com");
int valor = 10;
System.out.println(contato);
System.out.println(valor);
testePassagemValorReferencia(valor, contato);
System.out.println(contato);
System.out.println(valor);
E agora? Qual a saída das variáveis valor e contato?
Hands On!
Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com");
int valor = 10;
System.out.println(contato);
System.out.println(valor);
testePassagemValorReferencia(valor, contato);
System.out.println(contato);
System.out.println(valor);
Como funciona a passagem de parâmetros?
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
HeapStack/Pilha do programa
Como funciona a passagem de parâmetros?
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
Heap
private static void testePassagemValorReferencia2(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato.setNome("Contato"+novoValor);
}
contato @EDF67894
valor 10
Stack/Pilha do método
Stack/Pilha do programa
Como funciona a passagem de parâmetros? - Exemplo 1
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
Heap
private
valor
contato
}
contato @EDF67894
valor 10
Stack/Pilha do método
Stack/Pilha do programa
Uma cópia dos valores é
feita e variáveis valor e contato
são criadas com escopo do
método
Como funciona a passagem de parâmetros? - Exemplo 1
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
Heap
contato @EDF67894
valor 10
Stack/Pilha do método
Stack/Pilha do programa
private
valor
contato
}
Como funciona a passagem de parâmetros? - Exemplo 1
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
Heap
contato @ABC1234
valor 20
Stack/Pilha do método
Stack/Pilha do programa
private static void testePassagemValorReferencia(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato = new Contato("Contato 2", "2345-6789", "contato2@email.com");
}
nome: Contato 2
telefone: 1245-6789
email: contato2@email.com
Como funciona a passagem de parâmetros? - Exemplo 2
contato @EDF67894
valor 10
nome: Contato 1
telefone: 1234-4567
email: contato1@email.com
Heap
contato @EDF67894
valor 10
Stack/Pilha do método
Stack/Pilha do programa
private
valor
contato
}
Como funciona a passagem de parâmetros? - Exemplo 2
contato @EDF67894
valor 10
nome: Contato 20
telefone: 1234-4567
email: contato1@email.com
Heap
contato @EDF67894
valor 20
Stack/Pilha do método
Stack/Pilha do programa
private static void testePassagemValorReferencia2(int valor, Contato contato){
int novoValor = valor + 10;
valor = novoValor;
contato.setNome("Contato"+novoValor);
}
Como funciona a passagem de parâmetros? Exemplo 2
contato @EDF67894
valor 10
Heap
private
valor
contato
}
contato @EDF67894
valor
Stack/Pilha do método
Stack/Pilha do programa
Uma cópia dos valores é
feita e variáveis valor e contato
são criadas com escopo do
método
nome: Contato 20
telefone: 1234-4567
email: contato1@email.com
20
Como funciona a passagem de parâmetros? Exemplo 2
contato @EDF67894
valor 10
Heap
private
valor
contato
}
contato @EDF67894
valor
Stack/Pilha do método
Stack/Pilha do programa
Uma cópia dos valores é
feita e variáveis valor e contato
são criadas com escopo do
método continua
apontando pra
mesma referência
na memória
nome: Contato 20
telefone: 1234-4567
email: contato1@email.com
20
contato @EDF67894
valor 10
nome: Contato 20
telefone: 1234-4567
email: contato1@email.com
HeapStack/Pilha do programa
Tipos primitivos: passagem por valor
contato @EDF67894
valor 10
nome: Contato 20
telefone: 1234-4567
email: contato1@email.com
HeapStack/Pilha do programa
Tipos primitivos: passagem por valor
Tipos classe, enum, array: passagem por referência
contato @EDF67894
valor 10
nome: Contato 20
telefone: 1234-4567
email: contato1@email.com
HeapStack/Pilha do programa
https://github.com/loiane/curso-java-basico
Código Fonte:
Não conhece Git/Github?
http://www.loiane.com/2013/11/
screencast-git-e-github-para-iniciantes
http://loiane.training
Fórum para dúvidas + certificado do curso.
Cadastro em:
Obrigada!
http://loiane.com
facebook.com/loianegroner
@loiane
https://github.com/loiane
youtube.com/user/Loianeg

Mais conteúdo relacionado

Destaque

[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throwsLoiane Groner
 
[Curso Java Basico] Aula 70: Threads: Definindo prioridades
[Curso Java Basico] Aula 70: Threads: Definindo prioridades[Curso Java Basico] Aula 70: Threads: Definindo prioridades
[Curso Java Basico] Aula 70: Threads: Definindo prioridadesLoiane Groner
 
[Curso Java Basico] Aula 65: Annotations (anotacoes)
[Curso Java Basico] Aula 65: Annotations (anotacoes)[Curso Java Basico] Aula 65: Annotations (anotacoes)
[Curso Java Basico] Aula 65: Annotations (anotacoes)Loiane Groner
 
[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finally[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finallyLoiane Groner
 
[Curso Java Basico] Aula 55: Enum: metodos value e valueOf
[Curso Java Basico] Aula 55: Enum: metodos value e valueOf[Curso Java Basico] Aula 55: Enum: metodos value e valueOf
[Curso Java Basico] Aula 55: Enum: metodos value e valueOfLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 38: Herança: Palavra chave super
[Curso Java Basico - Orientacao a Objetos] Aula 38: Herança: Palavra chave super[Curso Java Basico - Orientacao a Objetos] Aula 38: Herança: Palavra chave super
[Curso Java Basico - Orientacao a Objetos] Aula 38: Herança: Palavra chave superLoiane Groner
 
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)Loiane Groner
 
[Curso Java Basico] Aula 68: Threads: Interface Runnable
[Curso Java Basico] Aula 68: Threads: Interface Runnable[Curso Java Basico] Aula 68: Threads: Interface Runnable
[Curso Java Basico] Aula 68: Threads: Interface RunnableLoiane Groner
 
[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: Varargs[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: VarargsLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 25: Classes e metodos simples
[Curso Java Basico - Orientacao a Objetos] Aula 25: Classes e metodos simples[Curso Java Basico - Orientacao a Objetos] Aula 25: Classes e metodos simples
[Curso Java Basico - Orientacao a Objetos] Aula 25: Classes e metodos simplesLoiane Groner
 
[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catchLoiane Groner
 
[Curso Java Basico] Aula 72: Threads: notify, wait e notifyAll
[Curso Java Basico] Aula 72: Threads: notify, wait e notifyAll[Curso Java Basico] Aula 72: Threads: notify, wait e notifyAll
[Curso Java Basico] Aula 72: Threads: notify, wait e notifyAllLoiane Groner
 
[Curso Java Basico] Aula 58: Autoboxing e Unboxing
[Curso Java Basico] Aula 58: Autoboxing e Unboxing[Curso Java Basico] Aula 58: Autoboxing e Unboxing
[Curso Java Basico] Aula 58: Autoboxing e UnboxingLoiane Groner
 
[Curso Java Basico] Aula 23: Como debugar no Netbeans
[Curso Java Basico] Aula 23: Como debugar no Netbeans[Curso Java Basico] Aula 23: Como debugar no Netbeans
[Curso Java Basico] Aula 23: Como debugar no NetbeansLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 32: Encapsulamento: métodos g...
[Curso Java Basico - Orientacao a Objetos] Aula 32: Encapsulamento: métodos g...[Curso Java Basico - Orientacao a Objetos] Aula 32: Encapsulamento: métodos g...
[Curso Java Basico - Orientacao a Objetos] Aula 32: Encapsulamento: métodos g...Loiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave this
[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave this[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave this
[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave thisLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...Loiane Groner
 
[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printfLoiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca [Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca Loiane Groner
 
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...Loiane Groner
 

Destaque (20)

[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
[Curso Java Basico - Exceptions] Aula 50: stacktrace e throws
 
[Curso Java Basico] Aula 70: Threads: Definindo prioridades
[Curso Java Basico] Aula 70: Threads: Definindo prioridades[Curso Java Basico] Aula 70: Threads: Definindo prioridades
[Curso Java Basico] Aula 70: Threads: Definindo prioridades
 
[Curso Java Basico] Aula 65: Annotations (anotacoes)
[Curso Java Basico] Aula 65: Annotations (anotacoes)[Curso Java Basico] Aula 65: Annotations (anotacoes)
[Curso Java Basico] Aula 65: Annotations (anotacoes)
 
[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finally[Curso Java Basico - Exceptions] Aula 49: finally
[Curso Java Basico - Exceptions] Aula 49: finally
 
[Curso Java Basico] Aula 55: Enum: metodos value e valueOf
[Curso Java Basico] Aula 55: Enum: metodos value e valueOf[Curso Java Basico] Aula 55: Enum: metodos value e valueOf
[Curso Java Basico] Aula 55: Enum: metodos value e valueOf
 
[Curso Java Basico - Orientacao a Objetos] Aula 38: Herança: Palavra chave super
[Curso Java Basico - Orientacao a Objetos] Aula 38: Herança: Palavra chave super[Curso Java Basico - Orientacao a Objetos] Aula 38: Herança: Palavra chave super
[Curso Java Basico - Orientacao a Objetos] Aula 38: Herança: Palavra chave super
 
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)
[Curso Java Basico] Aula 54: Enumeradores como classe (construtor e metodos)
 
[Curso Java Basico] Aula 68: Threads: Interface Runnable
[Curso Java Basico] Aula 68: Threads: Interface Runnable[Curso Java Basico] Aula 68: Threads: Interface Runnable
[Curso Java Basico] Aula 68: Threads: Interface Runnable
 
[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: Varargs[Curso Java Basico] Aula 62: Varargs
[Curso Java Basico] Aula 62: Varargs
 
[Curso Java Basico - Orientacao a Objetos] Aula 25: Classes e metodos simples
[Curso Java Basico - Orientacao a Objetos] Aula 25: Classes e metodos simples[Curso Java Basico - Orientacao a Objetos] Aula 25: Classes e metodos simples
[Curso Java Basico - Orientacao a Objetos] Aula 25: Classes e metodos simples
 
[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch[Curso Java Basico - Exceptions] Aula 47: try, catch
[Curso Java Basico - Exceptions] Aula 47: try, catch
 
[Curso Java Basico] Aula 72: Threads: notify, wait e notifyAll
[Curso Java Basico] Aula 72: Threads: notify, wait e notifyAll[Curso Java Basico] Aula 72: Threads: notify, wait e notifyAll
[Curso Java Basico] Aula 72: Threads: notify, wait e notifyAll
 
[Curso Java Basico] Aula 58: Autoboxing e Unboxing
[Curso Java Basico] Aula 58: Autoboxing e Unboxing[Curso Java Basico] Aula 58: Autoboxing e Unboxing
[Curso Java Basico] Aula 58: Autoboxing e Unboxing
 
[Curso Java Basico] Aula 23: Como debugar no Netbeans
[Curso Java Basico] Aula 23: Como debugar no Netbeans[Curso Java Basico] Aula 23: Como debugar no Netbeans
[Curso Java Basico] Aula 23: Como debugar no Netbeans
 
[Curso Java Basico - Orientacao a Objetos] Aula 32: Encapsulamento: métodos g...
[Curso Java Basico - Orientacao a Objetos] Aula 32: Encapsulamento: métodos g...[Curso Java Basico - Orientacao a Objetos] Aula 32: Encapsulamento: métodos g...
[Curso Java Basico - Orientacao a Objetos] Aula 32: Encapsulamento: métodos g...
 
[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave this
[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave this[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave this
[Curso Java Basico - Orientacao a Objetos] Aula 30: Palavra chave this
 
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
[Curso Java Basico - Orientacao a Objetos] Aula 26: Classes e metodos com ret...
 
[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf[Curso Java Basico] Aula 63: printf
[Curso Java Basico] Aula 63: printf
 
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca [Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca
[Curso Java Basico - Orientacao a Objetos] Aula 46: Interface e heranca
 
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
[Curso Java Basico - Orientacao a Objetos] Aula 39: Heranca: modificadores de...
 

Semelhante a Java passagem parâmetros

SOLID - Os cinco princípios ágeis de POO
SOLID - Os cinco princípios ágeis de POOSOLID - Os cinco princípios ágeis de POO
SOLID - Os cinco princípios ágeis de POORamon Valerio
 
Como escrever bons testes! - Dex transforming days
Como escrever bons testes! - Dex transforming days Como escrever bons testes! - Dex transforming days
Como escrever bons testes! - Dex transforming days Danilo Pereira De Luca
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
"Pau que nasce torto ...". TDD e a qualidade de código.
"Pau que nasce torto ...". TDD e a qualidade de código."Pau que nasce torto ...". TDD e a qualidade de código.
"Pau que nasce torto ...". TDD e a qualidade de código.Juliano Santos
 
Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2irenescotolo
 

Semelhante a Java passagem parâmetros (7)

SOLID - Os cinco princípios ágeis de POO
SOLID - Os cinco princípios ágeis de POOSOLID - Os cinco princípios ágeis de POO
SOLID - Os cinco princípios ágeis de POO
 
Como escrever bons testes! - Dex transforming days
Como escrever bons testes! - Dex transforming days Como escrever bons testes! - Dex transforming days
Como escrever bons testes! - Dex transforming days
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
"Pau que nasce torto ...". TDD e a qualidade de código.
"Pau que nasce torto ...". TDD e a qualidade de código."Pau que nasce torto ...". TDD e a qualidade de código.
"Pau que nasce torto ...". TDD e a qualidade de código.
 
Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2
 
Math
MathMath
Math
 

Java passagem parâmetros

  • 1. 61 Curso de Java Passagem de parâmetros por valor e referência
  • 3. private static void testePassagemValorReferencia(int valor, Contato contato){ int novoValor = valor + 10; valor = novoValor; contato = new Contato("Contato 2", "2345-6789", "contato2@email.com"); }
  • 4. private static void testePassagemValorReferencia(int valor, Contato contato){ int novoValor = valor + 10; valor = novoValor; contato = new Contato("Contato 2", "2345-6789", "contato2@email.com"); } Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com"); int valor = 10; System.out.println(contato); System.out.println(valor); testePassagemValorReferencia(valor, contato); System.out.println(contato); System.out.println(valor);
  • 5. private static void testePassagemValorReferencia(int valor, Contato contato){ int novoValor = valor + 10; valor = novoValor; contato = new Contato("Contato 2", "2345-6789", "contato2@email.com"); } Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com"); int valor = 10; System.out.println(contato); System.out.println(valor); testePassagemValorReferencia(valor, contato); System.out.println(contato); System.out.println(valor); Qual a saída das variáveis valor e contato?
  • 7. private static void testePassagemValorReferencia2(int valor, Contato contato){ int novoValor = valor + 10; valor = novoValor; contato.setNome("Contato"+novoValor); }
  • 8. private static void testePassagemValorReferencia2(int valor, Contato contato){ int novoValor = valor + 10; valor = novoValor; contato.setNome("Contato"+novoValor); } Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com"); int valor = 10; System.out.println(contato); System.out.println(valor); testePassagemValorReferencia(valor, contato); System.out.println(contato); System.out.println(valor);
  • 9. private static void testePassagemValorReferencia2(int valor, Contato contato){ int novoValor = valor + 10; valor = novoValor; contato.setNome("Contato"+novoValor); } Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com"); int valor = 10; System.out.println(contato); System.out.println(valor); testePassagemValorReferencia(valor, contato); System.out.println(contato); System.out.println(valor); E agora? Qual a saída das variáveis valor e contato?
  • 11. Contato contato = new Contato("Contato 1", "1234-4567", "contato1@email.com"); int valor = 10; System.out.println(contato); System.out.println(valor); testePassagemValorReferencia(valor, contato); System.out.println(contato); System.out.println(valor); Como funciona a passagem de parâmetros? contato @EDF67894 valor 10 nome: Contato 1 telefone: 1234-4567 email: contato1@email.com HeapStack/Pilha do programa
  • 12. Como funciona a passagem de parâmetros? contato @EDF67894 valor 10 nome: Contato 1 telefone: 1234-4567 email: contato1@email.com Heap private static void testePassagemValorReferencia2(int valor, Contato contato){ int novoValor = valor + 10; valor = novoValor; contato.setNome("Contato"+novoValor); } contato @EDF67894 valor 10 Stack/Pilha do método Stack/Pilha do programa
  • 13. Como funciona a passagem de parâmetros? - Exemplo 1 contato @EDF67894 valor 10 nome: Contato 1 telefone: 1234-4567 email: contato1@email.com Heap private valor contato } contato @EDF67894 valor 10 Stack/Pilha do método Stack/Pilha do programa Uma cópia dos valores é feita e variáveis valor e contato são criadas com escopo do método
  • 14. Como funciona a passagem de parâmetros? - Exemplo 1 contato @EDF67894 valor 10 nome: Contato 1 telefone: 1234-4567 email: contato1@email.com Heap contato @EDF67894 valor 10 Stack/Pilha do método Stack/Pilha do programa private valor contato }
  • 15. Como funciona a passagem de parâmetros? - Exemplo 1 contato @EDF67894 valor 10 nome: Contato 1 telefone: 1234-4567 email: contato1@email.com Heap contato @ABC1234 valor 20 Stack/Pilha do método Stack/Pilha do programa private static void testePassagemValorReferencia(int valor, Contato contato){ int novoValor = valor + 10; valor = novoValor; contato = new Contato("Contato 2", "2345-6789", "contato2@email.com"); } nome: Contato 2 telefone: 1245-6789 email: contato2@email.com
  • 16. Como funciona a passagem de parâmetros? - Exemplo 2 contato @EDF67894 valor 10 nome: Contato 1 telefone: 1234-4567 email: contato1@email.com Heap contato @EDF67894 valor 10 Stack/Pilha do método Stack/Pilha do programa private valor contato }
  • 17. Como funciona a passagem de parâmetros? - Exemplo 2 contato @EDF67894 valor 10 nome: Contato 20 telefone: 1234-4567 email: contato1@email.com Heap contato @EDF67894 valor 20 Stack/Pilha do método Stack/Pilha do programa private static void testePassagemValorReferencia2(int valor, Contato contato){ int novoValor = valor + 10; valor = novoValor; contato.setNome("Contato"+novoValor); }
  • 18. Como funciona a passagem de parâmetros? Exemplo 2 contato @EDF67894 valor 10 Heap private valor contato } contato @EDF67894 valor Stack/Pilha do método Stack/Pilha do programa Uma cópia dos valores é feita e variáveis valor e contato são criadas com escopo do método nome: Contato 20 telefone: 1234-4567 email: contato1@email.com 20
  • 19. Como funciona a passagem de parâmetros? Exemplo 2 contato @EDF67894 valor 10 Heap private valor contato } contato @EDF67894 valor Stack/Pilha do método Stack/Pilha do programa Uma cópia dos valores é feita e variáveis valor e contato são criadas com escopo do método continua apontando pra mesma referência na memória nome: Contato 20 telefone: 1234-4567 email: contato1@email.com 20
  • 20. contato @EDF67894 valor 10 nome: Contato 20 telefone: 1234-4567 email: contato1@email.com HeapStack/Pilha do programa
  • 21. Tipos primitivos: passagem por valor contato @EDF67894 valor 10 nome: Contato 20 telefone: 1234-4567 email: contato1@email.com HeapStack/Pilha do programa
  • 22. Tipos primitivos: passagem por valor Tipos classe, enum, array: passagem por referência contato @EDF67894 valor 10 nome: Contato 20 telefone: 1234-4567 email: contato1@email.com HeapStack/Pilha do programa
  • 25. http://loiane.training Fórum para dúvidas + certificado do curso. Cadastro em: