| From | Sent On | Attachments |
|---|---|---|
| andre girao | Sep 15, 2011 3:41 am | |
| Guilherme Braga | Sep 15, 2011 5:18 am | |
| Julio Cesar | Sep 15, 2011 5:21 am | |
| Fernando Érico | Sep 15, 2011 6:35 am | |
| Samuel Freitas | Sep 15, 2011 6:58 am | |
| andre girao | Sep 15, 2011 7:06 am | |
| Helio Frota | Sep 15, 2011 8:17 am | |
| Helio Frota | Sep 15, 2011 8:27 am | |
| andre girao | Sep 15, 2011 8:31 am | |
| Henrique Luz | Sep 15, 2011 9:12 am | |
| Guilherme Braga | Sep 15, 2011 10:06 am | |
| BRUCE WAYNE | Sep 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"*
* *
-- Atenciosamente, Hélio Frota





