Duvida

5 respostas
L

Por que apenas f , g , h estao certas ?? Por as outras estao erradas??

class A {

public static void main(String[] args) {

final short s1 = 1; // 1

final char c1 = 1;  // 2

byte b1 = s1;       // 3

byte b2 = c1;       // 4

byte b3 = 1;        // 5

byte b4 = 1L;       // 6

byte b5 = 1.0;      // 7

byte b6 = 1.0d;     // 8

}

}

What is the result of attempting to compile the program?

a. 	Compiler error at 1

b. 	Compiler error at 2

c. 	Compiler error at 3

d. 	Compiler error at 4

e. 	Compiler error at 5

f. 	 Compiler error at 6

g. 	Compiler error at 7

h. 	Compiler error at 8

i. 	  Runtime error.

j. 	  None of the Above

5 Respostas

brlima

Acho que vc nao pode colocar um Long dentro de um Byte, assum como um Double em um Byte. Só por isso… Perde a precisao. Vc quer inserir 300 onde cabe 30, ain nao da…

Byte = 8bits
Long = 64bits
Double = 64bits

brlima

O java faz a conversao automatica de char para byte, logo se o valor for maior, o compilador gerara um erro: possible loss of precision.

Nesse caso o valor é 1. Ok. Mas se fosse 255, daria erro na compilação.

Isso serve pro short tb…

brlima
"New__Radical":
O compilador irá fazer uma conversão implicita, se o operando da direita for uma constante e tiver um valor permitido pelo operando da esquerda.
final char a = 100;
byte b = a; //Ok!!! a é um valor constante e 100 está dentro do permitido para byte.

char c = 1;
byte d = c; // ERRO

final char e = 234;
byte f = e; //ERRO

Verdade... esqueci do final.. (ups!)
Valeu New...

N

Então por que as linhas 3 e 4 estão corretas? :wink:

N

O compilador irá fazer uma conversão implicita, se o operando da direita for uma constante e tiver um valor permitido pelo operando da esquerda.

final char a = 100;
byte b = a; //Ok!!! a é um valor constante e 100 está dentro do permitido para byte.

char c = 1;
byte d = c; // ERRO

final char e = 234;
byte f = e; //ERRO
Criado 9 de janeiro de 2004
Ultima resposta 9 de jan. de 2004
Respostas 5
Participantes 3