Pessoal podem me ajudar na questão abaixo ?
Tinha entendido que, tudo o que roda no Java 5 tem que roda nas versões mais antigas do Java.
Com esse pensamento foi resolver a questão abaixo:
public class testeQuestao {
public static void go(Short s){
System.out.println("Utilizou SHORT ");
}
public static void go(Long l){
System.out.println("Utilizou LONG ");
}
public static void go(int i){
System.out.println("Utilizou int");
}
public static void main(String args[]){
short x = 7;
long y = 6;
go(x);
go(y);
}
}
As opções:
a) O codigo não compila.
b) O codigo roda mas gera uma exceção em tempo de execução.
c) Utilizou SHORT Utilizou LONG
d) Utilizou int Utilizou LONG
Tipo com o pensamento que eu tinha logo de cara procurei pela resposta : Utilizou int Utilizou int
e não tem !!!
Aew resolvi testar, se mudo o parametro do metodo go para:
go(7);
go(6);
Gera a saída: Utilizou int Utilizou int
Alguem pode me explicar o porque que quando passo
go(x);
go(y);
Não gera a saida Utilizou int Utilizou int pois a resposta correta é Utilizou int Utilizou LONG
[quote=SemChance]Pessoal podem me ajudar na questão abaixo ?
Tinha entendido que, tudo o que roda no Java 5 tem que roda nas versões mais antigas do Java.
Com esse pensamento foi resolver a questão abaixo:
public class testeQuestao {
public static void go(Short s){
System.out.println("Utilizou SHORT ");
}
public static void go(Long l){
System.out.println("Utilizou LONG ");
}
public static void go(int i){
System.out.println("Utilizou int");
}
public static void main(String args[]){
short x = 7;
long y = 6;
go(x);
go(y);
}
}
As opções:
a) O codigo não compila.
b) O codigo roda mas gera uma exceção em tempo de execução.
c) Utilizou SHORT Utilizou LONG
d) Utilizou int Utilizou LONG
Tipo com o pensamento que eu tinha logo de cara procurei pela resposta : Utilizou int Utilizou int
e não tem !!!
Aew resolvi testar, se mudo o parametro do metodo go para:
go(7);
go(6);
Gera a saída: Utilizou int Utilizou int
Alguem pode me explicar o porque que quando passo
go(x);
go(y);
Não gera a saida Utilizou int Utilizou int pois a resposta correta é Utilizou int Utilizou LONG
Desde já agradeço !
[/quote]
Bom tem uma pergunta dessas na pagina anterior vc podia dar uma olhada q la tema resposta mas…vamos lá.
vc tem que olhar NESTE CASO o que a JVM vai utilizar de meios mais faceis sendo assim: “ampliação” se nao tiver como fazer ela procura por “objetos wrappers (autoboxing)” e depois procura por varargs…
Sendo assim nesse caso quando vc passa um short para o método go() ele vai fazer uma ampliaçao para int, ao invez de fazer autoboxing para Short, e quando vc passa um long para o metodo go() ele vai fazer autoboxing para Long.