Você está na página 1de 16

Aula 3

Passagem por Valor/Referência


Sobrecarga de métodos

prof. Igor Oliveira Borges


Memória Stack e Heap

• Stack (Pilha) – área disponibilizada pelo SO para a


execução de seu programa
Stack

public static void main(String args[]){


//variáveis são alocadas na stack
int x = 4;
char caracter = ’p’;
double preco = 1.40;
....
} main
preco = 1.40

caracter = ’p’

x= 4

2
Memória Stack e Heap

• Heap – Acesso a toda a memória disponível no


computador
– Usada para alocar as referencias aos objetos (tipos não
primitivos) Heap
Stack
[I@6d06d69c
public static void main(String args[]){ 10 20 30
//variáveis são alocadas na stack
int x = 4;
int []vetor={10,20,30};
main
....
} vetor= [I@6d06d69c

x= 4

3
Escopo de variável

• O escopo de uma variável define uma região do


código onde a variável é visível

• Variáveis locais
– Definidas dentro do corpo dos métodos
– Não podem ser acessadas fora do método
• Parâmetros são utilizados para transitar informações
entre os métodos
4
Passagem de Parâmetros

• Por valor
– Parâmetros de tipos primitivos
– É criada uma cópia completa da informação dentro do método
– A cópia pode ser alterada, porem não irá refletir no valor inicial
(externo)
• Por referência
– Parâmetros de tipos NÃO primitivos
– É criada uma cópia da referência da informação dentro método
– Ao modificar o valor, todos que apontam para a referencia irão
visualizar a modificação
5
Exemplo Passagem por Valor

O que será
impresso em?

2 50

1 200

6
Exemplo Passagem por Referência
O que será
impresso em?

1 10 20 30 40 50

2 5 10 15 20 25

7
Sobrecarga de métodos

8
Sobrecarga de métodos (Overload)

• Java permite que vários métodos sejam definidos com o


mesmo nome
• Mas a assinatura do método deve ser diferente
– Número, tipos ou ordem de parâmetros recebidos
• Quando um método sobrecarregado é chamado
– Compilador seleciona o método adequado examinando a sua
assinatura
– Os métodos não podem ser distinguidos pelo tipo de retorno
• São utilizados para a realização de tarefas semelhantes
sobre tipos de dados diferentes 9
Exemplos

10
Exemplo – implementando sobrecarga

11
Em DUPLA
12
Exercícios

• 1 – Criar os seguintes métodos:


– lerVetor() – que recebe como parâmetro um vetor de
inteiros e realiza a entrada de dados no vetor (10
elementos)
– somarNumeros() – que recebe como parâmetro um vetor
inteiros, calcula o somatório e retorna a soma
– calcularMedia() – que recebe como parâmetro um vetor de
inteiros, calcula a média aritmética e retorna a média

13
Exercícios

• 2 – Dado um vetor com um conjunto de frutas

"carambola", "maçã", "pera", "uva", "laranja",


"goiaba", "ameixa", "mamão", "melancia",
"framboesa", "pitanga", "açaí", "graviola",
"banana", "maracujá"

14
Exercícios
• Criar os seguintes métodos:
– pesquisar() – recebe como parâmetro o vetor de frutas e uma
String, contendo o nome de uma fruta. O método deve verificar
se a fruta existe no vetor e retornar um valor booleano
– pesquisar() – recebe como parâmetro o vetor de frutas e um
inteiro, indicando um índice. O método deve retornar o nome da
fruta indicada pelo índice. Retornar null, caso não exista o índice
no vetor
– pesquisar() – recebe como parâmetro o vetor de frutas e um
char, indicando a inicial de uma fruta. O método deve pesquisar
todas as frutas que iniciam com o caractere informado e retornar
um vetor de String com o nome dessas frutas
15
Exercícios
• 3 – Faça um programa ordenar um vetor de nomes.
• Criar os seguintes métodos:
– lerVetor() – que recebe um vetor de strings e realiza a entrada
de 10 nomes de pessoas
– ordenarCrescente() – que recebe o vetor de nomes, realiza a
ordenação alfabética e retorne um vetor de strings com os
nomes já ordenados
– imprimirVetor() – que recebe o vetor de nomes e imprime seus
valores
• Pesquisar o método sort() da classe Arrays em Java:
Arrays.sort()
16

Você também pode gostar