Questão de fundamentos da linguagem

What will happen when you invoke the following method?

[code] void infiniteLoop()
{
byte b = 1;

    while ( ++b > 0 );

    System.out.prinln("Welcome to Java");
}[/code]

A- The loop never ends.
B- Prints “Welcome to Java”.
C- Compilation error at line 5. ++ operator should not be used for byte type variables.
D- Prints nothing.

vai chegar uma hora no loop q b vai tentar receber o valor 128 ,
e será feito um narrow… que irá compactar esse valor num bit…
que irá tornar o valor de b = -128;

esse narrow ou compactacao que eh feito … nada mais do que eliminar bits do numero e colocar no tamanho do outro tipo nesse caso o byte

128 = 0000 0000 0000 0000 0000 0000 1000 0000 (literal int)
apos narrow
atribue-se 1000 0000 para a variavel b,
soh q como o valor do ultimo digito eh negativo ele:
faz o complemento -> 0111 1111
soma + 1 -> 1000 0000
e coloca o sinal de negativo -> - 1000 0000

que resulta no valor de -128 que é menor que 0, entao ele sai do loop …
e continua o fluxo , imprimindo
"Welcome to Java"

Cara…essas questoes taum muito modernas!!!
Caraio… nunca tive que pensar tanto huauhauah … pode continuar mandando!!!