You are on page 1of 15

AJ7 – Revisão para certificação SCJP

1 A Certificação 4
1.1 Certificação de Programador Java 4
1.2 Prova de certificação 4
2 Declaração e controle de acesso 5
2.1 Arrays 5
2.1.1 Exemplo de Questão 6
2.2 Classes, métodos e variáveis 7
2.3 Modificadores 8
2.3.1 Considerações sobre Inner Class 10
2.3.2 Exemplo de Questão 10
2.4 Construtores 11
2.4.1 Exemplo de Questão 12
2.5 Parâmetros de Retorno 13
2.5.1 Exemplo de Questão 13
3 Controle de fluxo, assertions e tratamento de exceptions 14
3.1 Condicionais 14
3.1.1 Exemplo de Questão 15
3.2 Laços 16
3.2.1 Exemplo de Questão 17
3.3 Exceptions 18
3.3.1 Exemplo de Questão 19
3.4 Tratamento de Exceptions 20
3.4.1 Exemplo de Questão 21
3.5 Assertions 22
3.5.1 Exemplo de Questão 24
4 Garbage Collector 25
4.1 Garbage Collector 25
4.1.1 Exemplo de Questão 25
4.2 Garbage Collector 26
4.2.1 Exemplo de Questão 26
5 Fundamentos da Linguagem 27
5.1 Fundamentos da Linguagem 27
5.1.1 Exemplo de Questão 30
6 Interfaces 31
6.1.1 Exemplo de Questão 31
6.2 Método main 32
6.2.1 Exemplo de Questão 32
6.3 Palavras reservadas e palavras chave 33
6.3.1 Exemplo de Questão 33
6.4 Inicialização 34
6.4.1 Exemplo de Questão 34

Copyright 2004- Globalcode – The Developers Company – Todos os direitos reservados


Índice

6.5 Tipos primitivos e String 35


6.6 Convenções para literais 36
6.7 Sequências de escape 37
6.7.1 Exemplo de Questão 37
7 Operadores e Atribuições 38
7.1 Operadores 38
7.1.1 Exemplo de Questão 41
7.2 método equals( ) 42
7.2.1 Exemplo de Questão 42
7.3 Operadores 43
7.3.1 Exemplo de Questão 43
7.4 Passagem de parâmetros 44
7.4.1 Exemplo de Questão 44
8 Sobrecarga, sobrescrita, tipo em runtime e orientação a objetos 45
8.1 Encapsulamento 45
8.2 Overload, Override e Construtores. 46
8.2.1 Exemplo de Questão 46
8.2.2 Exemplo de Questão 47
9 Threads 48
9.1 Threads 48
9.1.1 Exemplo de Questão 48
9.2 Threads 49
9.2.1 Exemplo de Questão 50
9.3 Synchronized, wait, notify e notifyAll 51
9.3.1 Exemplo de Questão 51
10 Classes fundamentais do Pacote java.lang 52
10.1 java.lang.Math 52
10.1.1 Exemplo de Questão 53
10.2 java.lang.String 54
10.2.1 Exemplo de Questão 54
10.3 Wrapper Classes 55
10.3.1 Exemplo de Questão 57
11 Collections 58
11.1 Collections 58
11.2 Resumo das interfaces 59
11.2.1 Interface Collection 59
11.2.2 Interface Set 59
11.2.3 Interface SortedMap 60
11.2.4 Interface List 60
11.2.5 Interface SortedSet 61
11.2.6 Interface Map 61

Copyright 2004- Globalcode – The Developers Company – Todos os direitos reservados


AJ7 – Revisão para certificação SCJP

11.2.7 Interface SortedMap 62


11.2.8 Interface Iterator 62
11.2.9 Interface ListIterator 62
11.2.10 Interface Comparator 62
11.3 Resumo das classes 63
11.4 Classe Collections 65
11.4.1 Exemplo de Questão 66
11.5 hashcode( ) 67
11.5.1 Exemplo de Questão 67
12 Apendice I - Respostas 68

Copyright 2004- Globalcode – The Developers Company – Todos os direitos reservados


1 A Certificação

1 A Certificação

1.1 Certificação de Programador Java


A certificação de programador Java é pré-requisito para as certificações de desenvolvedor, desenvolvedor de
componentes web, desenvolvedor de componentes de negócio, desenvolvedor de aplicações móveis e
desenvolvedor de Web Services, mas não para a de arquiteto. Ela tem como objetivo principal verificar o
conhecimento do profissional em relação à sintaxe e principais comandos e APIs da plataforma Java.

Atualmente existem três versões desta certificação, com diferenças nos objetivos e conteúdo dos testes:
certificação para plataforma 1.2 (CX 310-025)
certificação para plataforma 1.4 (CX-310-035)
upgrade para plataforma 1.4

Este guia tem como foco a certificação para a plataforma 1.4.

1.2 Prova de certificação


A prova de certificação tem a duração de 120 minutos e consiste em 61 questões. O percentual de aprovação é de
52%.
As questões são de múltipla escolha podendo ter uma ou mais alternativas corretas. Nos enunciados das
questões é informado o número de alternativas que deve ser marcado para a questão.

Como fazer a prova?


Para fazer a prova de certificação devem ser seguidos os seguintes passos:

1. Deve-se adquirir um voucher com a Sun Education. Para isso deve-se entrar em contato pelo telefone:
0800-55-7863
2. Após receber-se o voucher (que normalmente é enviado pelo correio), deve-se entrar em contato com um dos
centros autorizados Prometric para marcar o teste.
O voucher dá direito a somente um teste, e normalmente tem validade de um ano. Caso não se obtenha
aprovação no teste, um novo voucher deve ser adquirido para realização de novo teste. O prazo mínimo entre a
realização de dois testes é de 2 semanas.

Copyright 2004- Globalcode – The Developers Company – Todos os direitos reservados


4
AJ7 – Revisão para certificação SCJP

2 Declaração e controle de acesso

2.1 Arrays
Objetivos:
Escrever código que declare, construa e inicialize arrays de qualquer tipo utilizando qualquer uma das formas
permitidas para declaração e inicialização.

Teoria:
Para utilização de arrays em Java devem ser seguidos três passos:
Declaração : int[] arrayName; ou int arrayName[]
Construção: arrayName = new int[25];
Inicialização: arrayName[0] = 2 ; arrayName[1] = ...
Os três passos podem ser resumidos em uma única linha conforme exemplo abaixo:
float[ ] diameters = { 1.1f, 2.2f, 3.3f, 4.4f, 5.5f };

Quando um array é construído seus valores são inicializados para valores default conforme tabela:

Anotações

5
2 Declaração e controle de acesso

2.1.1 Exemplo de Questão


You want to find out the value of the last element of an array. You write the following code.
What will happen when you compile and run it?

Exemplo: MyAr.java
public class MyAr {
public static void main(String argv[]) {
int[] i = new int[5];
System.out.println(i[5]);
}
}
A) An error at compile time
B) An error at run time
C) The value 0 will be output
D) The string "null" will be output

6 Copyright 2004- Globalcode – The Developers Company – Todos os direitos reservados


AJ7 – Revisão para certificação SCJP

2.2 Classes, métodos e variáveis


Objetivos:
Declarar classes, classes aninhadas, métodos, variáveis de instância, variáveis estáticas e automáticas (locais de
métodos) fazendo o uso apropriado de todos os modificadores permitidos (como public, final, static, abstract, etc).
Dizer o significado de cada um destes modificadores tanto sozinhos como em combinações e dizer o efeito de
relações de pacote nos itens declarados qualificados por estes modificadores.

Teoria:

Existem 10 modificadores em Java, que se pode aplicar a classes, atributos de classe, métodos e construtores;
O modificador public permite acesso a TODAS as classes, sem distinção. Enquanto o modificador private não
permite acesso a nenhuma classe.

A tabela abaixo indica o "escopo" de métodos e atributos.

Modificador Classe Sub-classe Pacote Todos

private x

default x x

protected x x x

public x x x x

Anotações

7
2 Declaração e controle de acesso

2.3 Modificadores
Modificador final

classes: não podem ter sub-classes.


métodos: não podem ser sobrescritos.
variáveis: não podem ter seus valores modificados.

Modificador abstract

classes: não podem ser instanciadas, somente herdadas.


métodos: não tem seus corpos definidos, devendo o mesmo ser definido nas sub-classes.

Modificador static

Este modificador se aplica a variáveis e métodos, de forma que podem ser acessados sem que seja necessário
instanciar um objeto da classe.
métodos estáticos só podem acessar variáveis e métodos estáticos de sua classe.
métodos estáticos não possuem a variável implícita this.
métodos estáticos não podem ser sobrescritos para se tornarem não estáticos e vice-versa.

Modificador synchronized

Este modificador define uma trava para o objeto, de forma que somente uma thread possa acessá-lo de cada vez.

Modificador native

Estabelece que o método é definido fora do Java, em alguma outra linguagem.

Modificador transient

Este modificador estabelece que a variável não deve ser serializada.

Modificador volatile

Este modificador estabelece que a variável estará sempre com a informação mais recente em caso de acesso de
múltiplas threads.

A ordem dos modificadores não é importante.


Os modificadores e elementos a que se aplicam encontram-se resumidos na tabela abaixo:

8 Copyright 2004- Globalcode – The Developers Company – Todos os direitos reservados


AJ7 – Revisão para certificação SCJP

Anotações

9
2 Declaração e controle de acesso

2.3.1 Considerações sobre Inner Class


Teoria:

Uma inner class pode ter qualquer modificador de acesso, quando declarada internamente a uma
classe, porém, quando definida internamente a um bloco (por exemplo, um método) a classe não pode
ter nenhum modificador sendo efetivamente privada daquele bloco.
Uma inner class definida dentro de um bloco não pode ser static.
Uma inner class têm livre acesso as variáveis de sua classe externa, exceto quando for static
(acesso somente a variáveis static) ou quando for interna a um método (acesso somente a
variáveis final).

2.3.2 Exemplo de Questão


What happens when you attempt to compile and run these two files in the same
directory?

Exemplo: P1.java
package MyPackage;

class P1 {
void afancymethod() {
System.out.println("What a fancy method");
}
}

Exemplo: P2.java
public class P2 extends P1 {
public method() {
afancymethod();
}
}

A) Both compile and P2 outputs "What a fancy method" when run


B) Neither will compile
C) Both compile but P2 has an error at run time
D) P1 compiles cleanly but P2 has an error at compile

10 Copyright 2004- Globalcode – The Developers Company – Todos os direitos reservados


AJ7 – Revisão para certificação SCJP

2.4 Construtores
Objetivos:

Para uma dada classe, determinar se um construtor default será criado e em caso afirmativo como será este
construtor.

Teoria:

Construtores não são herdados pelas subclasses.


Um construtor padrão, sem argumentos, é gerado automaticamente somente quando não existe
nenhum outro construtor definido para a classe.
Um construtor pode chamar outros construtores de sua classe através de this(), ou construtores de
sua superclasse através de super(), porém quando isto ocorre estas chamadas devem ocorrer na
primeira linha do construtor. Desta forma, não é possível chamar ambos em um mesmo construtor;
Quando não é feita explicitamente, é gerada automaticamente uma chamada super() ao construtor
padrão da superclasse de qualquer classe;

Anotações

11
2 Declaração e controle de acesso

2.4.1 Exemplo de Questão


What will happen when you attempt to compile and run the following class?

Exemplo: Base.java
class Base {
Base(int i) {
System.out.println("Base");
}
}

class Severn extends Base {


public static void main(String argv[]) {
Severn s = new Severn();
}
void Severn() {
System.out.println("Severn");
}
}
A) Compilation and output of "Severn" in runtime.
B) Compile time error.
C) Compilation and no output at runtime.
D) Compilation and output of “Base”.

12 Copyright 2004- Globalcode – The Developers Company – Todos os direitos reservados


AJ7 – Revisão para certificação SCJP

2.5 Parâmetros de Retorno


Objetivos:

Identificar os valores de retorno permitidos para qualquer método dada a declaração de todos os métodos
relacionados nesta ou em superclasses.

Teoria:

Os métodos podem retornar qualquer tipo primitivo, classe ou interface existente.


Quando um método não retornar nenhum valor ele deve ser declarado como retornando void.
Métodos sobrescritos devem ter o mesmo valor de retorno do método original.
Métodos sobrecarregados não podem se diferenciar apenas pelo valor de retorno.

2.5.1 Exemplo de Questão


Given the following class definition, which of the following methods could be legally
placed after the comment //Here:

Exemplo: Rid.java
public class Rid {
public void amethod(int i, String s) {
}
//Here
}

A) public void amethod(String s, int i){}


B) public int amethod(int i, String s){}
C) public void amethod(int i, String myString){}
D) public void aMethod(int i, String s) {}

Anotações

13
3 Controle de fluxo, assertions e tratamento de exceptions

3 Controle de fluxo, assertions e tratamento de exceptions

3.1 Condicionais
Objetivos:

Escrever código utilizando comandos if e switch e identificando tipos de argumento permitidos para estes
comandos.

Teoria:

Sintaxe:

if(condicao) {
bloco de codigo
}
[else] {
bloco de codigo
}

A expressão if() aceita somente expressões booleanas como argumentos.

Sintaxe:

switch(parametro){
case parametroCase:
bloco de código
[break];
[default]:
bloco de código
break;
}

O parâmetro para switch() deve ser uma variável compatível com int (byte, short ,char ou int), e
cada elemento case aceita um único parâmetro, que deve ser uma constante ou expressão constante compatível
com a variável utilizada como argumento de switch().

14 Copyright 2004- Globalcode – The Developers Company – Todos os direitos reservados


AJ7 – Revisão para certificação SCJP

3.1.1 Exemplo de Questão


What will happen when you attempt to compile and run the following code?

public class MySwitch {


public static void main(String argv[]) {
MySwitch ms = new MySwitch();
ms.amethod();
}

public void amethod() {


int k = 10;
switch (k) {
default :
System.out.println("This is the default output "); break;
case 10 :
System.out.println("ten");
case 20 :
System.out.println("twenty");
break;
}
}
}

A) None of these options.


B) Compile time error target of switch must be an integral type.
C) Compile and run with output “this is the default output”.
D) Compile and run with output of the single line “ten”.

Anotações

15

You might also like