为什么我不能这样做?
public class test123 {
public static void main (String [] args) {
char c = 34;
char a = c + 10;
}
}
Run Code Online (Sandbox Code Playgroud)
java新手,如果这个问题实际上很愚蠢,我很抱歉。
当您添加数字时,它们会经历二进制数字提升。也就是说,操作数被加宽以允许它们相加。
当您将 a 添加char到 an时int, thechar会扩展为 an int,结果是 an int。
因此,您必须将intback 转换为char:
char a = (char) (c + 10);
Run Code Online (Sandbox Code Playgroud)
然而,即使将 a 添加char到另一个char,两者都会扩展为int,并且结果再次是 an int,因此不能分配给char变量。规则基本上是:
因此,即使您将 a 添加byte到 a byte,两者都会扩展为int,相加,结果是一个int。
例外情况是如果您做了c final:
final char c = 34;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,c具有编译时常量值,c + 10编译时常量表达式也是如此。char因为它是一个编译时常量表达式,所以编译器知道它的值,并且知道它适合;的范围。所以这是允许的:
final char c = 34;
char a = c + 10;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |