aulajava04 array

Upload: carlos-daniel-ribeiro

Post on 30-May-2018

239 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 AulaJava04 Array

    1/12

    Java Bsico

    Prof. Jucimar Souza

    ArrayArray

    01 Instroduo

    Array uma estrutura de dados Todos os itens tem o mesmo tipo Tem o seu tamanho definido no momento da criao Grupo continuo de alocao de memria

    Tambm chamado de Vetor ou Matriz Unidimencional

  • 8/14/2019 AulaJava04 Array

    2/12

    -45

    6

    0

    72

    1543

    -89

    0

    62

    -3

    1

    6453

    78

    c[ 1 ]

    c[ 2 ]

    c[ 4 ]

    c[ 3 ]

    c[ 5 ]

    c[ 6 ]

    c[ 7 ]

    c[ 8 ]

    c[ 9 ]

    c[ 10 ]

    c[ 11 ]

    c[ 0 ]Nome do array (Noteque todos os elementos

    do vetor tem o mesmonome, c)

    Nmero da posio (indice) do elemento do array c

    02 - Array Examinando o vetor c

    c o nome do vetor c.length retorna o comprimento do vetor

    (nmero de posies) c tem 12 elementos (c[0],c[1],...,c[11])

    O valor de c[0] -45 Os colchetes [] esto no nivel mais alto de

    precedncia em Java

  • 8/14/2019 AulaJava04 Array

    3/12

    03 Declarando e Alocando Vetores

    Declarando e alocando um vetorVetores so objetos que ocupam memriaAlocado dinamicamente com o operador new

    int c[] = new int[ 12 ];

    equivalente a:

    int c[]; // declarao do vetorc = new int[ 12 ]; // aloca o vetor

    Podemos alocar um vetor de objetos assimString b[] = new String[ 100 ];

    04 Usando vetoresAcessando o vetor

    meuVetor[1]=5;

    Inicializando valores no vetor: int meuVetor[] ={5,3,4,25,12,10,8,15,16};

    Acumulando valores: for (int i=0;i

  • 8/14/2019 AulaJava04 Array

    4/12

    05 Arrays de Referncias

    comum ouvirmos array de objetos. Quando criamos uma array de alguma

    classe, ela possui referncias. O objeto, como sempre, est na memria

    principal e, na sua array, s ficamguardadas as referncias (endereos).

    Exemplo: Conta[] minhasContas;

    minhasContas = new Conta[10]; Quantas contas foram criadas aqui?

    05 Arrays de Referncias (Cont) Na verdade, nenhuma. Foram criados 10 espaos que voc pode

    utilizar para guardar uma referncia a umaConta. Por enquanto, eles se referenciampara lugar nenhum (null).

  • 8/14/2019 AulaJava04 Array

    5/12

    05 Arrays de Referncias (Cont)

    Voc pode popular sua array assim:

    Conta contaNova = new Conta(); contaNova.saldo = 1000.0; minhasContas[0] = contaNova;

    Ou voc pode fazer isso diretamente:

    minhasContas[1] = new Conta(); minhasContas[1].saldo = 3200.0;

    05 Arrays de Referncias (Cont)

    Uma array de tipos primitivos guarda valores, uma arrayde objetos guarda referncias.

  • 8/14/2019 AulaJava04 Array

    6/12

    06 Passagem de Parmetros

    Existem duas maneiras de passarparmetros para um mtodo Por valor

    Copia do valor do argumento passado na chamadodo mtodo;

    Em Java todos os tipos primitivos so passados porvalor

    Por Referncia O chamador d ao mtodo chamado acesso direto

    aos dados O mtodo chamado pode manipular estes dados

    06 Passagem de Parmetros Por Referencia (Continuao)

    mais rpido que a passagem por valor Em Java, todo objeto passado por referncia

    Em Java, Array so objetos Por este motivo a passagem de parmetros quando

    usado um vetor (array) por referncia

  • 8/14/2019 AulaJava04 Array

    7/12

  • 8/14/2019 AulaJava04 Array

    8/12

    // multiplica cada elemento por 2

    static void mudaVetor( int array2[] )

    {for ( int i = 0; i < array2.length; i++ )

    array2[ i ] *= 2;

    }

    // multiplica o argumento por 2

    static void mudaElemento( int elemento )

    {

    elemento *= 2;

    }

    } //fim da classe

    07 Arrays Multidimencionais (Matrizes) Multiplas dimenses

    Tabela com linhas e colunas Declarando um array com duas dimenses b[2][2]

    int b[][] = { {1,2},{3,4} }; 1 e 2 foram inicializados em b[0][0] e b[0][1] 3 e 4 foram inicializados em b[1][0] e b[1][1]

    int b[][] = { {1,2},{3,4,5} }; A linha 0 com 1 e 2 A linha 1 com 3 , 4 e 5

  • 8/14/2019 AulaJava04 Array

    9/12

    07 Arrays Multidimencionais(Matrizes) - (cont)

    Alocando um array de multiplas dimenses Pode-se alocar uma matriz 3 x 4 assim

    int b[][];b = new int [3][4];

    As linhas podem ter numeros diferente decolunasint b[][];

    b = new int[ 2 ][ ]; // aloca 2 linhas

    b[ 0 ] = new int[ 5 ]; // aloca 5 col. na linha 0b[ 1 ] = new int[ 3 ]; // aloca 3 col. na linha 1

    07 Arrays Multidimencionais(Matrizes) - (cont)

    a[ 0 ][ 0 ]

    a[ 1 ][ 0 ]

    a[ 2 ][ 0 ]

    a[ 0 ][ 1 ]

    a[ 1 ][ 1 ]

    a[ 2 ][ 1 ]

    a[ 0 ][ 2 ]

    a[ 1 ][ 2 ]

    a[ 2 ][ 2 ]

    a[ 0 ][ 3 ]

    a[ 1 ][ 3 ]

    a[ 2 ][ 3 ]

    Linha 0

    Linha 2

    Linha 1

    Coluna 0 Coluna 1 Coluna 2 Coluna 3

    Indice da coluna

    Indice da Linha

    Nome do Array

  • 8/14/2019 AulaJava04 Array

    10/12

    07 Arrays Multidimencionais(Matrizes) - (cont)

    Array de objetos de duas dimenses

    07 Arrays Multidimencionais(Matrizes) - (cont)

    Array de objetos com duas dimenses onde as linhas temtamanhos direfentes.

  • 8/14/2019 AulaJava04 Array

    11/12

    08 Estrutura for aprimorada (enhanced-for)

    for ( parmetro : nomeDoVetor)instruo

    Parametro divido em duas partes o tipo eidentificador.

    Ex.: for (int i: meuVetor)

    System.out.println(i);

    09 Percorrendo vetores no Java 5class VetoresJava5{

    public static void main(String args[]) {int[] idades = new int[10];for (int i = 0; i < 10; i++) {

    idades[i] = i * 10;}

    for (int x : idades) {System.out.println(x);

    }}}

    E agora nem precisamos mais do length para percorrer matrizes que noconhecemos seu tamanho:

    void imprimeArray(int[] array) {for (int x : array) {

    System.out.println(x);}

    }

  • 8/14/2019 AulaJava04 Array

    12/12

    Exercicio

    Utilize a classe ContaCorrente que fizemosno curso anterior. Instancie um vetor com10 posies onde em cada posio vaiapontar para uma instancia da classeContaCorrente.

    Atribua valores diretamente ou viadigitao, e imprima os dados utilizando umenhanced-for.