Questão Wrapper

10 respostas
diego2005

Pessoal, me deparei com a seguinte questão em um simulado:

  1. public class Wrapper {
  2. public static void main(String[] args) {
    
  3. Boolean b = new Boolean("correct");
    
  4. try {
    
  5. Byte by = new Byte("201");
    
  6. Integer i = new Integer("123");
    
  7. Double db = new Double(2.2d);
    
  8. } catch (NumberFormatException nfe) {
    
  9. System.out.println ("Bad number!");
    
  10. }
    
  11. }
    
  12. }

A. NumberFormatException when executing line 5
B. NumberFormatException when executing line 7
C. No output is generated
D. Exception is thrown at line 3, incorrect boolean value
E. Compile time error

Eu pensei que fosse a letra D, mas não é, a correta é a A.

O que acontece quando não passamos uma String “true” ou “false” pro construtor da classe Boolean???

10 Respostas

M

leia ae… retirei do site da sun…


Boolean

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.

T

Puxa, o problema de fazer a prova da 1.4 é que nos simulados aparecem essas coisas que são verdadeiras pegadinhas.
Nem desconfiava que a classe java.lang.Boolean tinha um construtor que aceitava String, e pior, que tivesse essa regra de conversão (“true” = true, qualquer outra coisa = “false”).
O Java 5.0 tem tantas coisas a mais que a prova nem se preocupa mais com essas babaquices. Entretanto, começa a pedir coisas como “você sabe de cor e salteado o javadoc da interface java.io.Serializable” ou "você sabe como usar a classe java.util.PriorityQueue.

diego2005

Ah sim, então qualquer coisa que não seja: “true”, “TRUE”, “True”, “TrUe”…vai ser um valor false.

Valeu pela ajuda…

M

Me parece que para o exame 5.0 vc tem que saber a fundo a respeito de Wrappers… tipo construtores, metodos, etc… E independe do exame, 1.4 ou 5.0, eh so pegadinha…

To estudando pra prova (5.0). Vou marcar para o inicio de setembro e estou aguardando somente o voucher chegar… caso vcs conhecam bons simulados, postem os links ae…

vlw

T

Na 5.0 a parte de Autoboxing (que é essa história dos wrappers que você mencionou) cai, mas misturada com as outras questões. (Ou seja, supõe-se que você entenda direitinho autoboxing, porque ele não é a motivação principal da questão, e sim outra coisa).
Note que nesse exame, muitas coisas caem misturadas com outras coisas. Portanto não dá para ficar sem estudar alguma coisa - se você deliberadamente não estudar Assertions, você pode acabar não acertando uma questão que também envolve “import static” :frowning:
Pegue o demo da www.whizlabs.com - as questões não são lá muito iguais à prova, mas a idéia é que o jeitão da prova (ou seja, questões drag&drop etc.) é igualzinho. Para você simular mesmo, faça o seguinte:

  • Arranje duas ou três folhas de plástico duro, uma caneta de retroprojetor, e algo que apague isso (como um algodão molhado);
  • Faça a prova simulada só com isso - e o simulador da Whizlabs, é claro. Em muitos lugares eles não lhe dão papel ou dicionário, só esses folhas de plástico e a caneta, para usar como rascunho.
diego2005

Então, essa parte eu entedi, só não sabia que poderia passar para o construtor de Boolean uma string diferente de true ou false, pensei que gerava uma exceção em tempo de execução…

diego2005

Sim, claro, isso eu sabia, o que eu não sabia é que pode passar qualquer String, sem gerar uma exceção…

I

Vc pensou q era a letra D…
Vamos ao pq q não era.

Byte x = new Byte(“200”); //200 Ultrapassa o intervalo de Byte que só vai de -128 ate 127.

Agora se vc fazer assim
Byte x = new Byte ((byte)200);

Ele aceita =).

I

ué… Ele tem duas assinaturas de metodos…

Boolean (String)
Boolean (boolean)

=).

I

Eu lembro quando estava estudando pra certificação q eu fiz varios testes com varios construtores principalmente o Boolean

Boolean x = new Boolean(papainoel);

Boolean y = new Boolean(truex);

Boolean j = new Boolean(false);

Boolean k = new Boolean (true);
E testava

System.out.println(x.booleanValue());

System.out.println(y.booleanValue());

System.out.println(j.booleanValue());

System.out.println(k.booleanValue());

E somente o outro imprimia true o resto tudo false

Criado 4 de agosto de 2006
Ultima resposta 4 de ago. de 2006
Respostas 10
Participantes 4