posted 22 years ago
Hi Marc,
The rules applicable for the conversions here in your example are:
1) Conversions from char to int are always valid as they are widening conversions.
2) Conversions from int to char obviously require an cast as they are narrowing conversions.
3) Implicit narrowing conversions occurs from int to char in two cases:
--> When the int literal is in the range of the char (0 to 65535)
--> If the int variable is declared as final and its value is in the range of char (0 to 65535).
So,
int i=100;
final int j=200;
char c='c';
i=c; //valid - widening conversion
//c=i; //compile error - requires cast as it is narrowing conversion
c=100; //valid - implicit conversion of the int literal 100 to char
c=j; //valid - j is a final variable
Hope this helps,
Priya