Escolar Documentos
Profissional Documentos
Cultura Documentos
1. O que irá acontecer quando compilar e executar o seguinte program ?
public class MyClass {
private static int x = getValue();
private static int y=1;
a) Erro de compilação devido a restrição de acesso de variáveis private da classe.
b) Erro de compilação devido à forma como a referência é enviada pelo método getValue()
c) Erro de compilação devido ao envio de referência de atributo static y
d) Imprime o número 0
A chamada do método estático getValue() acontece ANTES que y tenha um valor
definido e, portanto, o valor 0 é apresentado. Se fosse:
private static int y=1;
private static int x = getValue();
o código apresentaria o valor 1 na tela.
2. O que acontece ao tentar compilar e rodar o seguinte código.
void imprime(){
System.out.println(s);
}
a) O código roda mas nada aparece na saída padrão.
b) O código não roda e dá um erro na criação do objeto da classe Construtor
c) O código roda e “null” aparece na saída padrão.
d) O código roda e “Construtor” aparece na saída padrão.
Aqui é uma questão de atenção: o método void Construtor () não é o construtor da classe pois
ele tem um retorno (void). Portanto, s é inicializado com o valor null e a chamada k.imprime()
apresenta o valor null na tela.
3. O que irá acontece ao tentar rodar e compilar o seguinte programa:
a) Compila e imprime Derivado na saída padrão
b) Compila mas não produz nada na saída padrão.
c) Compila e imprime Pai na saída padrão.
d) Não compila.
O construtor da classe Derivada chama de forma IMPLÍCITA um construto sem parâmetros
da classe Pai (que não existe). Cuidado, isso somente ocorre nas versões mais recentes do Java.
4. Qual é o resultado da compilação e execução do código abaixo ?
public class A {
int b=10;
A(){
this.b=7;
}
int f(){
return b;
}
}
}
}
a) Não compilação
b) Imprime 15
c) Imprime 10
d) Imprime 7
Aparece o 7 porque, após inicializar a variável, o construtor é chamado. Como a classe
B (instância criada) não tem construtor, um construtor padrão é chamado. Esse construtor
padrão chama o construtor da classe pai – neste caso a A.
Assim, ao chamar o construtor da classe A, o valor de b é alterado para 7 e esse valor é
mostrado na tela.
5. Qual das alternativas abaixo apresenta um conjunto de modificadores de acesso possíveis e
legais ao método getMe da classe B ?
public class A {
void getMe() {}
}
a) public, private, protected
b) public, protected, default (padrão)
c) public, private, default(padrão)
d) private, protected, default (padrão)
O método sobrescrito pode ter modificador de acesso igual ou menos restritivo que o
da classe original. O método da classe A tem modificador de acesso default. Portanto, os
modificadores permitidos são protected, public e default.
6. O fragmento de código abaixo é equivalente a a qual linha de código ?
if (x>y) z=x; else z=y;
a) z=x<y?x:y
b) z=x<y?y:x
c) z=y<x?x:y
d) z=y<x?y:x
7. Qual o resultado da compilação e execução do seguinte trecho de código ?
a) Não compila
b) Imprime na saída padrão true
c) Imprime na saída padrão false
d) Imprime na saída padrão true==true
e) Imprime na saída padrão false==false
Como ambas as Strings foram criadas com o new, cada uma representa um espaço na
memória e cada uma tem um valor armazenado diferente. Portanto, s1.equals(s2) é false e
s2.equals(s1) é false. Assim, temos a operação relacional false==false → que é verdadeira.
Portanto, letra (b).
8. Qual a saída do seguinte trecho de código após ser compilado e executado ?
a) Strings são imutáveis, aparece um erro de compilação
b) Strings são imutáveis, aparece um erro de execução
c) Imprime Welcome
d) Imprime Welcome to Java!
Str.concat(“ to Java”) irá resultar em “Welcome to Java” , PORÉM, não irá modificar a
variável str. Portanto, letra (c)
9. O que aconteceu se chamarmos o método infiniteloop ?
void infiniteLoop()
{
byte b = 1;
while ( ++b > 0 )
;
System.out.println("Welcome to Java");
}
a) O laço nunca termina (loop infinito)
b) Imprime Welcome to Java
c) Erro de compilação
d) Compila e executa mas não imprime nada na tela
O loop é de um comando vazio – mas o b é incrementado 1 a 1. O que acontece é que qualquer
valor acima de 128 e menor que 256 (o máximo passa a ser representado usando oito bits)
passa a ser representado como um valor negativo para o tipo byte.
Exemplo:
byte exemplo1 = 127; // por ser menor que 128, não precisa de cast
byte exemplo2 = (byte) 255; // por ser maior que 128, o cast é necessário
byte exemplo3 = (byte) 254; // idem acima
println(exemplo1); // mostra 127
println(exemplo2); // mostra 1
println(exemplo3); // mostra 2
10.Qual declaração de método main abaixo permitiria que a classe fosse iniciada como um
programa executável ?
a) public static int main(char args[])
b) static public void main(String args[])
c) public static void MAIN(String args[])
d) static public void main(String args)
Intermediário
11. Qual das alternativas abaixo é um tipo de retorno (destacado com ???) legal para o método
callMe() na classe Test ?
interface X{}
class AA{}
class A extends AA implements X{}
class B extends A{}
class C extends B{}
class SuperTest {
public A callMe() {return new A(); }
}
a) X
b) A
c) B
d) Test
Como na classe SuperTest callMe retorna A, na classe Test, callMe pode retornar qualquer
coisa que seja A, ou seja, pode ser B ou C. No nossa caso a resposta é letra (c)
12.O que acontecerá quando tentar compilar e rodar o seguinte programa ?
class Inner{
void test(){
if (Test.this.ativo);
MeuMetodo();
}
}
public Test(){
new Inner().test();
}
public static void main(String[] args) {
new Test();
}
}
a) Imprime “Meu Método”
b) O programa não imprime nada mas termina corretamente
c) O programa dá erro de execução
d) O programa dá erro de compilação
new Test() cria uma instância de Test e chama o construtor. O construtor, chama o método
test() da classe interna Inner. O método test() tem a seguinte lógica:
void test(){
if (Test.this.ativo);
MeuMetodo();
}
Claro que Test.this.ativo é falso (false), mas ao final do if temos um ponto e vírgula (comando
nulo) que não é executado. Em seguida, MeuMetodo() é chamado. Ele imprime na tela “Meu
método”.
13.Considere o seguinte trecho de código:
Ao executar esta classe através do comando
java MyProgram meu teste
A saída no console será:
a) MyProgram
b) teste
c) meu
d) Erro pois não existe o vetor args
14.Considere o trecho de código JAVA abaixo.
A saída no console será:
a) 012345
b) 0123459
c) 0123456789
d) 01234589
15.O que acontece quando compilamos e executamos o código abaixo ?
System.out.println(m1.x);
System.out.println(m2.x);
System.out.println(m3.x);
a) Apresenta um erro de compilação
b) Imprime
10
20
30
c) Imprime
30
30
30
d) Imprime
5
5
5
Variável estática é de toda a classe, portanto, o valor 30 vale para m1, m2 e m3.
16.O que será impresso na saída padrão se a seguinte classe for executada usando o comando:
java Test 1 dois 3
a) 1
b) dois
c) 3
d) Lança uma exceção NumerFormatException
Pois está tentando converter “dois” para Integer.
17. Qual das seguintes afirmações é verdadeira ?
a) Assim que o contador de referência de um objeto atinge zero, este será imediatamente
coletado pelo garbage collector.
b) O método finalize() não será invocado mais de uma vez para o mesmo objeto
c) O método finalize() não pode ser sobrecarregado.
d) A implementação do garbage collector é independente da JVM
18.Qual será o resultado da compilação e execução do seguinte código ?
a) Erro de compilação.
b) Imprime Super
c) Imprime Sub
d) Compila, roda mas não imprime nada
O método teste(0 chamado é da instância, portanto, da classe SubTest.
19.O que será escrito na saída padrão quando o programa a seguir for compilado e executado ?
a) 0 0 1
b) 0 1 0
c) 1 0 0
d) 1 0 1
Vetor é objeto e é passado como referência. Dentro do método f, a e b são atributos. Dentro do
método g, b é variável local e a é atributo.
20.Qual das seguintes afirmativas é um benefício do encapsulamento ?
a) Reutilização de código
b) Execução mais rápida
c) Menos dependência entre classes
d) Maior acoplamento
21. A ordem dos modificadores de acesso de membros de classe do mais restritivo para o
menos restritivo está apresentado na alternativa :
a) private, protected, default, public
b) private, default, protected, public
c) public, protected, default, private
d) public, default, protected, private
Avançado
22.Qual será o resultado da compilação e execução do seguinte código:
a) Imprime true
b) Imprime false
c) Lança uma exceção (Exception)
d) Dá um erro de compilação
Os valores do vetor Boolean[5] não foram inicializados. Java inicializa o atributo com um
valor inicial. Mas os elementos do vetor não são inicializados.
23. Qual o resultado da compilação e execução do seguinte código:
void f(){
System.out.println("Inner f");
}
}
a) O código não compila.
b) Imprime Inner Constructor, Outer e Sub Inner f na saída padrão.
c) Imprime Outer e Sub Inner f na saída padrão.
d) Imprime Outer, Inner f e Sub Inner f na saída padrão
e) Imprime Outer na saída padrão
Não é possível acessar t de dentro do método f() no main.
Gabarito
Questão Resposta
1 d
2 c
3 d
4 d
5 b
6 c
7 b
8 c
9 b
10 b
11 c
12 a
13 c
14 a
15 c
16 d
17 b
18 c
19 d
20 a
21 b
22 c
23 a