Estudo para certificação – Capítulo 03

Esse é a terceira parte de uma série de posts que irei fazer.
Nesses posts, vou colocando um resumo ou talvez até mesmo trechos na íntegra do livro: Certificação Sun para Programador Java 6 da Kathy Sierra e Bert Bates.

Obs: Caro leitor, você não deve ter como base para uma certificação Java apenas a leituras desses meus resumos em meu blog. É de suma importância a leitura por completo do livro, bem como a realização de alguns simulados.

Capítulo 3 – Atribuições

1) Pilha e Heap
– As variáveis locais(variáveis de métodos) residem na pilha.
– Os objetos e as suas variáveis de instâncias residem no heap.

2) Literais e Conversão(cast) de Tipos Primitivos
– Os literais inteiros podem ser decimais, octais ou hexadecimais.
– Os literais para longs terminam com L ou l.
– Os literais para float terminam com F ou f, os double terminam com um dígito, com D ou d.
– Os literais para char são um único carácter dentro de aspas simples.

3) Escopo
– O escopo refere-se ao tempo de vida de uma variável.
– Variáveis estáticas vivem basicamente pelo mesmo tempo que as suas classes.
– Variáveis de instância vivem pelo mesmo tempo que os seus objetos.
– Variáveis locais vivem pelo mesmo tempo que os seus métodos na pilha; entretando, se o método chamar outro método, elas ficam temporariamente indisponíveis.
– Variáveis de bloco (p. ex. em um for ou em um if) vivem até a conclusão do bloco.

4) Atribuições Básicas
– As expressões com tipo inteiro sempre geram um resultado com o tamanho de int, nunca menor.
– Os números de ponto flutuante são implicitamente doubles(64 bits).
– Atribuições compostas (p.ex. +=) realizam uma conversão(cast) automático.
– Uma variável de referência armazena os bits que são usados para se referir a um objeto.
– As variáveis de referência podem referir-se a subclasses do tipo declarado, mas não a superclasses.
– Ao se criar um novo objeto, três coisas acontecem:
– Cria-se uma variável de referência do tipo do objeto.
– Cria-se um novo objeto.
– Atribui-se o objeto criado à variável de referência.

5) Utilizando Variável ou Elemento de Array que não tenha sido Inicializado ou Atribuído
– Quando um array de objetos for instanciado, os objetos do array não serão instanciados automaticamente, mas todas as referências receberão o valor padrão null.
– Quando um array de tipos primitivos for instanciado, todos os elementos receberão seus valores padrão.
– As variáveis locais/automáticas/de método nunca recebem um valor padrão. Se você tentar usar uma antes de inicializá-la, receberá um erro do compilador.

6) Passando Variáveis Para os Métodos
– Os argumentos dos métodos são sempre cópias.
– Os argumentos dos métodos nunca são objetos reais(podem ser referências a objetos).

7) Declaração, Construção e Inicialização de Arrays
– Os arrays podem conter tipos primitivos ou objetos, mas o array propriamente dito sempre será um objeto.
– Os arrays multidimensionais são apenas arrays compostos por outros arrays.
– Um array de tipos primitivos aceitará qualquer valor que possa ser promovido implicitamente ao tipo declarado para o array. Por exemplo, uma variável byte pode ser inserida em um array de int.
– Um array de objetos pode conter qualquer objeto que seja uma subclasse ao tipo declarado no array. Por exemplo, se Horse estender a classe Animal, então o objeto Horse poderá ser inserido em um array de animais.
– Se você atribuir um array a uma referência de array já declarada, o array terá que estar na mesma dimensão da referência ao qual for atribuído.
– Pode ser atribuído um array de um tipo a uma referência de array já declarada de um de seus supertipos.

8) Blocos de Inicialização
– Os blocos de inicialização estáticos rodam uma vez, quando a classe é carregada pela primeira vez.

9) Usando Wrappers
– As classes Wrappers estão correlacionadas aos tipos primitivos.
– Os Wrappers têm duas funções principais:
– Encapsular tipos primitivos para que possam ser manipulados como objetos.
– Fornecer métodos utilitários para tipos primitivos(geralmente conversões).
– Os construtores wrapper podem usar uma String ou um tipo primitivo, exceto para Character, que só pode usar um tipo char.
– Os métodos importades em wrapper são:
– xxxValue(): Retorna um tipo primitivo.
– parseXxx(): Usa String de parâmetro, retorna um tipo primitivo.
– valueOf(): Usa String de parâmetro, retorna um objeto encapsulado.

10) Boxing
– O recurso de boxing lhe permite converter tipos primitivos em wrappers ou converter wrappers em tipos primitivos automaticamente.

11) Sobrecarga Avançada
– Não pode ampliar/transformar de um tipo wrapper para outro(É-UM falha).
– Não pode ampliar e depois fazer boxing(Um int não pode se tornar um Long).
– Você pode fazer boxing e depois ampliar. (Um int pode se tornar um Object, através de um Integer)

12) Coleta de Lixo
– A finalidade da coleta de lixo é excluir objetos que não possam ser alcançados, liberando memória.
– Um objeto está qualificado para a coleta quando nenhuma thread ativa consegue alcançá-la.


Principal referência:

SIERRA, Kathy; BATES, Bert. Certificação Sun para Programador Java 6 – Guia de estudo – SCJP EXAME 310-065. Rio de Janeiro: Alta Books Editora, 2011.

Não deixem de verificar os próximos capítulos.
Valeu pessoal!

Anúncios

Obrigado pelo comentário.

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s