Uma questão interessante sobre Wrappers

11 respostas
marciolx

dado o código abaixo, escolha a única alternativa correta:

a - erro de compilação na linha 6
b - erro de compilação na linha 8
c - erro de compilação na linha 9
d - erro de compilação na linha 12
e - compila, roda e lança runtime exception na linha 6
f - compila, roda e lança runtime exception na linha 8
g - compila, roda e lança runtime exception na linha 9
h - compila, roda e imprime true true
i - compila, roda e imprime true false
j - compila, roda e imprime false true
k - compila, roda e imprime false false

1 public class Teste08 {
2 	private double d;
3 	private boolean b;
4 	private boolean bb;
5 	public Teste08() {
6 		d = (new Double("4.02E-5F")).doubleValue();
7 		Boolean b1 = new Boolean(false);
8 		Boolean b2 = new Boolean("FALSE");
9 		b = b1==b2 || b1.equals(b2);
10 		Integer winteger = new Integer(10);
11 		Long wlong = new Long(10);
12 		bb = winteger.equals(wlong);
13 	}
14 	public boolean getB() {
15		return b;
16 	}
17 	public boolean getBb() {
18 		return bb;
19 	}
20 	public static void main (String [] args) {
21 		Teste08 t = new Teste08();
22 		System.out.println(t.getBb() + " " + t.getB());
23 	}
24 }

11 Respostas

R

O problema tem muita firula para tirar o cara da jogada.O erro esta na linha 8 boolean só aceita false ou true.Não compila

marciolx

:slight_smile: tem muita firula mesmo, o lance é olhar para a questão como se fosse uma partida de xadrez (ou counter strike)

mas sua resposta não está correta, como pode ser visto aqui a classe Boolean tem dois construtores, um que aceita um primitivo boolean como argumento e outro que aceita QUALQUER String.
Assim a API descreve o construtor que aceita String como parâmetro:

public Boolean(String s)

Allocates a Boolean object representing the value true if the string argument is not null and is equal, ignoring case, to the string “true”.
Otherwise, allocate a Boolean object representing the value false. Examples:

new Boolean("True") produces a Boolean object that represents true.
new Boolean("yes") produces a Boolean object that represents false.

Parameters:
s - the string to be converted to a Boolean.

Repare que se a String for igual a true (ignorando o case, isto é, vale para true, True, TRUE, TRue, etc) o Boolean guardará um objeto que representa o valor booleano true. Para qualquer caso diferente destes, isto é, para qualquer outro valor do parâmetro String, incluindo uma referência String igual a null, o valor “wrapped” representará o primitivo boolean false.

Tente de novo!

R

Valeu Marciolx.Obrigado pela aula.

C

Boa noite !

Minha primeira aparição.

acho que é:
j - compila, roda e imprime false true

Falow!

marciolx

“chicoria”:
Boa noite !

Minha primeira aparição.

acho que é:
j - compila, roda e imprime false true

Falow!

correto!
uma das pegadinhas aqui é usar o método equals para comparar dois wrappers de classes diferentes (Integer e Long), neste caso, apesar do valor “wrapped” ser o mesmo, o método equals retorna false.

Licuri

Boa questão

marciolx

Gustavo.foa

Boa questão msm,

eu me confundi na linha 6, pois pensei que o sufíxo E era inválido e foi colocado apenas para confundir com F (de float) ms ele é para exponenciação!

Aprendi!

valew ae!

victorwss

Tópico ressuscitado, duas vezes.

GustavoLaguna

Ta ae, acho que erraria essa questão. As da prova são nesse nível?

D

Cara, as questões até que não são dificeis o négocio e não ficar nervoso na hora da prova.

Sobre a prova tem questões que eu achei mais dificeis agora não lembro de exemplo pra postar.

Já responderam certo

j - compila, roda e imprime false true

jairodione

Olá!

A letra correta é a “j” devido a linha que contem o codigo abaixo:

Long wlong = new Long(10); bb = winteger.equals(wlong);

se a linha com o objeto do tipo Long for alterada para:

Integer wlong = new Integer(10);
       bb = winteger.equals(wlong);

o resultado vai ser “true true” que se não me engano é a letra “h”

Criado 6 de setembro de 2003
Ultima resposta 3 de mai. de 2011
Respostas 11
Participantes 9