Arrays (vetores) em Java

Post on 18-Feb-2017

726 views 0 download

Transcript of Arrays (vetores) em Java

Arrays

Prof. Daniel Brandão

Metodologia e Linguagem de Programação

1. Introdução

Em Java, arrays são objetos especiais. Uma classe dearrays pode ser especificada usando a notação

Tipo [ ]

Precisamente, esta notação demonstra a classe cujos

objetos são arrays, de qualquer tamanho, contendo

elementos do tipo ”Tipo”. As operações de uma classe

array são pré-definidas, não sendo possível a inclusão de

novas operações.

2

1. Introdução

• Em Java, criamos um array através do comando new.

• Ex:

int [ ] numeros = new int[10]

Neste caso, criamos um array do tipo INT chamado

numeros. Com o comando NEW, definimos o tamanho

dele (no caso, 10).

3

1. Introdução

• A variável numeros armazena a referência de um arraycriado na memória do computador atravésdo comando new. Na memória, o espaço ocupado poresse array está dividido em 5 “pedaços”iguais numerados de 0 até 4. Cada “pedaço” podearmazenar um valor do tipo int.

4

1. Introdução

Como exemplo, considere a definição da

classe Banco contendo o atributo contas, o qual é

associado a uma classe de arrays de contas bancárias:

class Banco {

private int indice = 0;

private Conta[ ] contas;

}

5

1. Introdução

Como nesta classe nenhum inicializador foi especificado,

um inicializador default é automaticamente introduzido

pelo Java. Para uma classe chamada Classe, este

inicializador é implicitamente declarado como:

Classe ();

Em particular, atributos do tipo int são inicializados por

default (padrão) com 0, enquanto atributos de tipo classe

são inicializados por default com a constante null. Esta

constante corresponde a referência nula; isto é, uma

referência que não aponta para nenhum objeto.

6

1. Introdução

Dentro de um bloco, podemos declarar diversas variáveis e usá-las:

Isso pode se tornar um problema quando precisamosmudar a quantidade de variáveis a serem declaradasde acordo com um parâmetro. Esse parâmetro podevariar, como por exemplo, a quantidade de númerocontidos num bilhete de loteria. Um jogo simples possui 6números, mas podemos comprar um bilhete maiscaro, com 7 números ou mais.

7

1. Introdução

Para facilitar esse tipo de caso podemos declarar umvetor (array) de inteiros:

int[] idades;

O int[] é um tipo. Uma array é sempre um objeto,portanto, a variável idades é uma referência. Vamosprecisar criar um objeto para poder usar a array. Comocriamos o objeto-array?

idades = new int[10];

8

1. Introdução

• O que •fizemos anteriormente foi criar uma array de int

de 10 posições e atribuir o endereço no qual ela foi

criada. Podemos ainda acessar as posições do array:

• E para adicionar um elemento dentro deste array?

9

1. Introdução

• O código anterior altera a sexta posição do array. No

Java, os índices do array vão de 0 a n-1, onde n é o

tamanho dado no momento em que você criou o array.

Se você tentar acessar uma posição fora desse alcance,

um erro ocorrerá durante a execução.

10

2. Percorrendo um array

11

2. Percorrendo um Array

• Quando criamos uma array de alguma classe, ela possui

referências. O objeto, como sempre, está na memória

principal e, na sua array, só • ficam guardadas as

referências (endereços).

• EX:

Conta[] minhasContas;

minhasContas = new Conta[10];

• Quantas contas foram criadas neste exemplo?

12

2. Percorrendo um Array

• Nenhuma. Foram criados 10 espaços que você pode

utilizar para guardar uma referência a uma Conta. Por

enquanto, eles se referenciam para lugar nenhum

(null). Se você tentar:

System.out.println(minhasContas[0].saldo);

13

2. Percorrendo um Array

• Um erro deverá ocorrer durante a execução! Pois, na

primeira posição da array, não há uma referência para

uma conta, nem para lugar nenhum. Você deve popular

sua array antes.

• EX:

14

2. Percorrendo um Array

• Também podemos fazer isso de uma forma direta.

• EX:

15

2. Percorrendo um Array

• Assim, nosso array estaria sendo criado da seguinte

maneira:

16

2. Percorrendo um Array

• Agora, vamos ver como podemos “percorrer” dentro de

um array e retornar algo.

• EX: Criando e percorrendo um array.

17

2. Percorrendo um Array

• Mas e se não fomos nós que criamos o array, como

saber o seu tamanho para poder percorre-lo?

18

2. Percorrendo um Array

• Para que nosso for tenha um parâmetro que o limite,

todo array em Java possui um atributo chamado length.

(tamanho). Com ele, conseguimos definir que iremos

percorrer até o final, ou seja, percorrer o tamanho

inteiro do array.

19

Exercícios

1) Crie uma classe em Java chamada Notas. Dentro dela,

crie um array com 4 posições e insira 4 notas de um

aluno, de 0 a 10. Depois, faça um retorno pelo

System.out.println imprimindo os valores contidos no

array.

20

Exercícios

2) Crie uma classe em Java chamada Idades. Dentro dela,

crie um array com 10 posições e insira idades variadas 0 a

100 anos. Depois, faça um retorno pelo System.out.println

imprimindo os valores contidos no array criado.

21

Exercícios

3) Crie uma classe em Java chamada Valores. Dentro dela,

crie um array com 20 posições e faça uma rotina que

includa valores múltiplos de 2 em cada posição. Depois,

faça um retorno pelo System.out.println imprimindo os

valores contidos no array criado.

22

3. Utilizando foreach

• Para acessar todos os elementos de um array, é possível

aplicar o comando for com uma sintaxe um pouco

diferente.

• EX:

23

4. Ordenando um array

• Considere um array de String criado para armazenar nomes

de pessoas. Podemos ordenar esses nomes através do

método Arrays.sort().

• EX:

24

5. Duplicando um array

• Para copiar o conteúdo de um array para outro com maior

capacidade, podemos utilizar o método Arrays.copyOf().

• EX:

25

6. Preenchendo um array

• Podemos preencher todas as posições de um array com um

valor específico utilizando o método Arrays.fill().

• EX:

26

Exercícios

4) Crie uma classe que receba 3 nomes, passados como

argumentos na criação de um array chamado Pessoas, do tipo

String. Depois, imprima os resultados em ordem alfabética.

Tudo deve estar dentro do método main.

27

Exercícios

5) Crie uma classe que receba 5 nomes, passados como

argumentos na criação de um array chamado Nomes, do tipo

String. Depois, faça um outro array contendo a cópia dos

valores contidos no array Nomes, mas aumentando seu

tamanho para 10 posições. Após, imprima os dois arrays. Tudo

deve estar dentro do método main.

28

Exercícios

6) Crie uma classe que preencha todas as posições de um

array contendo como valor o seu nome. Após, imprima o array

criado com todas as posições.

29