Duvida

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

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

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…

[quote=“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.

[code]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
[/code][/quote]

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

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

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.

[code]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
[/code]