Please take a look at below example i cant understand the relation between char and byte
byte b = 1;
char c = 2;
c = b; // line 1
Give me compilation Error because c is type of char
and b is type of byte
so casting is must in such condition
but now the tweest here is when i run below code
final byte b = 1;
char c = 2;
c = b; // line 2
line 2 compile successfully it doesn't need any casting at all
so my question is why char
c behave different when i use final access modifier with byte
Because qualifying it with
final
makes the variable a constant variable, which is a constant expression. Soactually becomes
And the compiler has a guarantee that the value
1
can fit in achar
variable.With a non constant
byte
variable, there is no such guarantee.byte
is signed,char
is unsigned.