Return

10 respostas
F

:cool: Questãozinha pra desopilar

  1. public class Teste {
  2. short teste (int x, float y) {
  3. }
  4. }

Quais das seguintes linhas, se forem inseridas independentemente na linha 15 NÃO compila :?: Explique.

A - return (char)x;

B - return (byte)(x/y);

C - return (short)y;

D - return (byte)3.14d;

E - return (short)(y/x);

F - return (short)x/7;

:wink:

10 Respostas

R

Somente as linhas A e F não compilam.

O retorno do método deve ser short, então:

A - Não é possível uma conversão implícita de char para short
F - O resultado da operação é int, e também não compila porque não é possível uma conversão implícita de int para short :wink:

D

Acho q so as opções A e F tb. O cast da F so passa o x e nao a operação toda.
:oops:

F

essa conversão é possível sim, veja:

short h1 = 'A';

compila numa boa;
h1 recebe o numero 65.

S

“fabiostb”:

A - Não é possível uma conversão implícita de char para short

essa conversão é possível sim, veja:

short h1 = 'A';

compila numa boa;
h1 recebe o numero 65.

neste caso da certo po que 65 cabe dentro de um short, mas se vc fizesse assim:

char h1 = 'A'; 
       short h2 = h1;

daria erro de precisão!
obrigando fazer um casting manual!

por isso comcordo com os demais em que a resposta é A e F

F

tb acho q a resposta seja A e F, som F eu concordo plenamente, mas em A estou na dúvida, mas escolheria A por eliminação:

qdo eu faço assim:

final char h1 = 'A';
   short h2 = h1;

dá certo, entaum pq q qdo digo q o parametro x é final n dá certo?!

S

“fabiostb”:
tb acho q a resposta seja A e F, som F eu concordo plenamente, mas em A estou na dúvida, mas escolheria A por eliminação:

qdo eu faço assim:

final char h1 = 'A';
   short h2 = h1;

dá certo, entaum pq q qdo digo q o parametro x é final n dá certo?!

pq o parametro x é final mas na verdade não é o x que é enviado e sim uma cópia de x que por sua vez não é final!

na verdade eu gostaria de saber pq q não da quando não e final e quando é final da certo!? (no caso do exemplo que vc postou )

F

faz parte da regra do java, pode ter:

o cast implicito é feito se

byte,short ou char do lado esquerdo da atrivuição e
byte,short,char e int do lado direito , sendo avlores constantes (final)

obs.: tudo isso sendo que o source não pode estourar a gama do destino

acho q é assim

S

fabiostb, valeu pela dica velho!

eu não tava ligado neste detalhe, muito importante pra quem quer fazer a prova de certificação

valeu …

[]s Victor …

R

A resposta:

Se referia ao contexto da pergunta. Mas generalizando: Somente literais inteiros e expressões envolvendo operandos finais até int podem ser atribuídas a char, short ou byte por conversão implícita.

Dá certo quando o operando do lado direito da atribuição é final porque sendo final não pode ser alterado e aí o compilador tem condições de avaliar se haverá perda de precisão.
:???:

F

com isso dá pra se perceber que a atribuição normal difere do RETURN, que é um caso especial de atribuição .

pelo meu ver as regras mmudam qdo se trata de RETURN, alguem pode explicar?

Criado 24 de fevereiro de 2005
Ultima resposta 28 de fev. de 2005
Respostas 10
Participantes 4