atom feed12 messages in net.java.dev.cejug.discussao[CEJUG] Re: Duvidas sobre assuntos da...
FromSent OnAttachments
andre giraoSep 15, 2011 3:41 am 
Guilherme BragaSep 15, 2011 5:18 am 
Julio CesarSep 15, 2011 5:21 am 
Fernando ÉricoSep 15, 2011 6:35 am 
Samuel FreitasSep 15, 2011 6:58 am 
andre giraoSep 15, 2011 7:06 am 
Helio FrotaSep 15, 2011 8:17 am 
Helio FrotaSep 15, 2011 8:27 am 
andre giraoSep 15, 2011 8:31 am 
Henrique LuzSep 15, 2011 9:12 am 
Guilherme BragaSep 15, 2011 10:06 am 
BRUCE WAYNESep 15, 2011 1:46 pm 
Subject:[CEJUG] Re: Duvidas sobre assuntos da Certificação Java Standard
From:Helio Frota (heli@gmail.com)
Date:Sep 15, 2011 8:17:32 am
List:net.java.dev.cejug.discussao

Boa tarde André,

http://java.sun.com/docs/books/vmspec/2nd-edition/html/Compiling.doc.html#14942

Gostei desta questão, segundo a especificação da JVM (link acima) o que acontece é que a JVM usa instruções (tableswitch e lookupswitch) que são operadas somente sobre dados primitivos "int".

"The Java virtual machine's tableswitch and lookupswitch instructions operate only on int data. Because operations on byte, char, or short values are internally promoted to int, a switch whose expression evaluates to one of those types is compiled as though it evaluated to type int. If the chooseNear method had been written using type short, the same Java virtual machine instructions would have been generated as when using type int. Other numeric types must be narrowed to type int for use in a switch."

15 de setembro de 2011 09:22, Julio Cesar <juli@gmail.com> escreveu:

Olá Andre,

Até onde eu sei, e talvez eu esteja errado, só do simples fato de nao ser um int ou char, ele dá o erro de compilacao. Lembrando que no Java 7 está aceitando strings agora.

abracos, Julio Cesar

2011/9/15 andre girao <andr@hotmail.com>

Pessoal,

Estarei fazendo a prova de certificação agora no mês de outubro, estou fazendo umas revisões finais, mas fiquei com um dúvida, por favor, vejam o código abaixo :

int x = 10; final int i = 10; final Integer i2 = 20; switch(x){ case i: System.out.println("x = "+ x); case i2 : System.out.println("x = "+ x); // não compila, não é constante }

Alguém sabe me informar porque 'Integer' mesmo marcado como 'final', não é considerado constante, para ser utilizado dentro do switch ????

*André Girão* *Java Programmer* *Tel: (085) - 87052585 *

*"Piratear é ilegal. Usar Linux é legal !"* *"Write once, run anywhere"*