int i =5;
char c = '0'+5;//可行...
char c = '0'+i;//不可行
在手机屏幕上输出数字字符(char)Rand.nextInt(10);输出乱码,所以想用用‘0’+的办法...现在转换出问题了SOS
------最佳解决方案--------------------------------------------------------
char c =(char)((int)'0'+i);
------其他解决方案--------------------------------------------------------
用字符串输出
String s=String.valueOf(Rand.nextInt(10));
------其他解决方案--------------------------------------------------------
5是常量,编译器能立马计算出'0'+5的值,并判断其是否在char的取值范围内
'0'+i中的i是变量,编译器无法确定结果是否在char的取值范围内
------其他解决方案--------------------------------------------------------
char c = (char) ('0' + i);
------其他解决方案--------------------------------------------------------
二楼说的也对,我再在这说得明白点吧,希望能说到明白:
你可以这样理解,i 是变量,他可以指向的的类型多,在这里你就应该可以知道,所以不确定,Java就不允许你这样子做,
我觉得LZ别的应该可以理解了的。
------其他解决方案--------------------------------------------------------
int i =5;
char c = '0'+5;//可行...
char c = '0'+i;//不可行
对于第一句:‘0’+5是字符‘0’对应的ASCII码值加5,即48+5 = 53,对应字符是‘5’,也可以转换成int型输出53
对于第二句:i是int型,字符‘0’与i相加会将‘0’化为其ASCII码值48,再加i,也是53,然后53赋值给 c,但int型不能转型成char型,除非强转,改为char c = (char)(‘0’+i);可行
------其他解决方案--------------------------------------------------------
二楼正解,这里不解释
------其他解决方案--------------------------------------------------------
在这补充下,要考虑java的运行机制。char c = '0'+5;能够在程序的编译阶段确定关系,而char c = '0'+i;是在程序的运行阶段确定的。