Galera algumas coisas interessantes que alguns amigos da empresa estavam conversando sobre
[code]byte b = 1;
for ( int i = 0; i < 8; i++ ) {
System.out.println( "bit " + b );
// invert o bit ( o que é 0 vira 1 )
System.out.println( "bit invertido " + ~b );
// anda um bit
b <<= 1;
}[/code]
O que será impresso acima ?? ( Sem usar IDE )
[code]
for ( int i = 0; i < Integer.MAX_VALUE + 1 ; i++ ) {
System.out.println( "Laço numero : " + i);
}[/code]
Em Java, um Integer é representado com 32 bits, logo, quando fazemos Integer.MAX_VALUE + 1, estamos pegando o maior valor representado nessa cadeia, mais 1, isso dá um estouro de bits e passa pra representação negativa…
[quote=Omeganosferatu]Serio ? Legal, eu nem fui … foi um amigo que passou pra mim, provavelmente ele deve ter visto lá ou sei lá …
[/quote]
Perdão é parecido mas não é naum…eu vi o código achei q fosse e ja tinha dado aquela resposta, mas nem era
int max = Integer.MAX_VALUE;
int min = Integer.MAX_VALUE - 100;
for (int i = min; i <= max; i++) {
System.out.println("Laço numero : " + i);
}
Loop infinito, o valor de i nunca será impresso. O problema está em usar o operador <= com o maior número de int. Todo int é menor ou igual ao valor máximo.
A conta não é 12345 + 54321, mas 12345 + 5432. O "1" na verdade é um L minúsculo, tornando esse valor um long. Sempre use o L maiúsculo, para evitar confusões desse tipo.
Sim. Me tire uma dúvida, a variável será denominada "H", não?
Isso não vai imprimir 114? A minha curiosidade era se os valores eram hexadecimais ou decimais, pelo visto é o primeiro caso. Pouca utilidade? Eu me arriscaria a afirmar que isto até atrapalha. Sequer me recordo de ter visto isso ao estudar para o SCJP.
Outra coisa bem inútil:
Isso acima compila… Pode inserir em qualquer linha de seu código que funciona. O mais incrível foi que eu já encontrei essa… anomalia por aí e até hoje não entendi o motivo do programador ter posto isto no meio do código (com outro link), pois não tem função alguma. Joschua Bloch menciona algo semelhante no seu último livro.
Isso acima compila… Pode inserir em qualquer linha de seu código que funciona. O mais incrível foi que eu já encontrei essa… anomalia por aí e até hoje não entendi o motivo do programador ter posto isto no meio do código (com outro link), pois não tem função alguma.[/quote]
Bom, é um label ( http: ) seguido por um comentário (//www…) e pode até ter uma função (a parte do label, pelo menos):
http://www.yahoo.com.br;
while (true) {
for (int i=0; i < 10; i++) {
if (i % 7 == 0) break http;
}
}
Temmmm muito detalhezinho que é foda, os que os caras já pedem é complicado demais imagine se fossem usar essas " pegadinhas " ainda piores… estaríamos fud…