Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

scorpio

Comparação atribuição!

Recommended Posts

Uma pergunta/informação/curiosidade/como_vocês_queiram_chamar para vocês!

 

Um colega meu teve uma prova de Java e tinha uma pergunta +- assim:

 

 

O que sera impresso na tela?

static boolean a;
static boolean b;
static boolean c;

boolean bool = (a=true)||(b=true)&&(c=true);

System.out.println(a +","+ b +","+ c +"");
Qual resultado seria?

 

A) true,true,true

B) false,false,false

C) Tá louco, boolean não pode ser impresso!

 

 

Qual dos tres?

 

 

 

É amigão é isso mesmo que você pensou! NENHUM deles!

O que? tá maluco cara?!

 

Mas analisando a resposta que o professor dele deu, acontece o seguinte.

 

Na comparação OU:

 

true || true

1ª || 2ª

 

Ele só verifica a primeira condição, por causa de ela ser OU, nem chega a executar o resto da condição(SE O RESULTADO DA PRIMEIRA FOR TRUE), isso deve ser para ganho de desempenho.

 

Então só vai executar a primeira atribuição, que o resultado é true.

 

O resultado é: true,false,false.

 

Parece uma coisa meio óbvia, mas por muitas vezes deixamos passar batido. Na verdade isso É ÓBVIO. Mas deixamos sempre nos levar pelos lados mais complicados, ficamos com um "arreio"(aquela coisa que poe na cara do burro para não ver aos lados) na cara.

 

Fica aí um [o que você quiser aqui] para você.

 

:)

 

Até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguns detalhes:

 

Esse teste com atribuição só funciona com booleanos. Primeiro efetua-se a atribuição e depois o valor é verificado.

 

|| só avalia a segunda expressão se a primeira for falsa e && só avalia a segunda expressão se a primeira for verdadeira.

Realmente foram criados para melhorar o desempenho.

 

Por último o código não está completo, para isso para funcionar temos que deduzir que:

boolean bool = (a=true)||(b=true)&&(c=true);

System.out.println(a +","+ b +","+ c +"");

foi chamado dentro de um método estático.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguns detalhes:

 

Esse teste com atribuição só funciona com booleanos. Primeiro efetua-se a atribuição e depois o valor é verificado.

 

|| só avalia a segunda expressão se a primeira for falsa e && só avalia a segunda expressão se a primeira for verdadeira.

Realmente foram criados para melhorar o desempenho.

 

Por último o código não está completo, para isso para funcionar temos que deduzir que:

boolean bool = (a=true)||(b=true)&&(c=true);

System.out.println(a +","+ b +","+ c +"");

foi chamado dentro de um método estático.

Sim, estava dentro do main, fiquei com reguiça de escrever tudo.... :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom esses exercícios.

Eu sei de onde esse professor tirou essa pergunta foi de uma site que tem simulado pra prova de certificação.

 

Se alguém quiser saber eu procuro e posto o link.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve ter sido mesmo.

 

Posta ae o link Kandrade!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dizem que é um dos sites com as perguntas mais difíceis sobre a certificação.

Pena que está desatualizado e muita coisa que ele foca nem é cobrado mais nos objetivos da atual certificação.

Veja as questões de operators.

 

http://www.danchisholm.net/oct1/mybook/index.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu!

 

Pretendo algum dia fazer certificação em java. Não sei ainda.... mas quando for e se for eu vou usar muito esse site!

 

valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estou só esperando meu voucher chegar pra fazer a prova.

Estou preparando um material falando sobre a experiência da prova e o que usei para estudar.

Quando terminar posto tudo aqui.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Pretendo algum dia fazer certificação em java. Não sei ainda.... mas quando for e se for eu vou usar muito esse site!

 

valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.