Duvida booleana

mais uma ae…

tava testando uma questao q vi na web e nao entendi pq isso aocntece:

boolean b = true;
System.out.println(“b=true >” +(b=true));
System.out.println(“b=false >” +(b=false));

exibe:

b=true >true
b=false >false

Se é uma atribuição, não deveria ser sempre TRUE ???

Nao, pq uma atribuição vale o resultado dela.

Por exemplo:

String s; System.out.println( (s = "teste") ); System.out.println( (s = "teste") instanceof String );

Cool, huh? 8)

Vc deve se lembrar que uma linha de programa se transforma geralmente em várias instruções em um nivel mais baixo, por exemplo a sua linha :
System.out.println(“b=false >” +(b=false));

ficaria assim em um assembly fictício :

1 mov b , false
2 mov tmp , new String
3 add tmp , b
4 push tmp
5 invoke System.out.println
( mistura de x86 com assembly de JVM heheh !! mas eh soh para dar um ideia )

veja que sua variável booleana ‘b’ foi carregada com ‘false’ antes de ser concatenada à String temporaria e a mesma passada como argumento ao metodo de impressão.
Isso por que vc envolveu com parenteses a expressão b = false, assim
o compilador sabe que deve resolver a mesma antes de mais nada.

Claudio Gualberto.

qual mock exam é equivalente a prova real,
tipo pra eu ter uma idéia se tenho condicao de
fazer a prova ou nao

:roll: