情况1:
char c='A'+'A';
System.out.println(c); // print question mark (?)
Run Code Online (Sandbox Code Playgroud)
案例2:
char c1='A';
char c2='A'+c1; // Compile time error
System.out.println(c2);
Run Code Online (Sandbox Code Playgroud)
在case1中我有逻辑当我添加两个字符文字时,ascii值的总和是打印,这相当于问号的ascii值.但在case2中为什么编译时错误显示' 无法从int转换为char '
如果char + char = int则此规则必须适用于这两种情况.
两个或多个 int 类型或低于 int 的变量相加将得到 int 类型。
所以你所做的char c2 = 'A' + c1;实际上并没有给你一个 char 结果。它为您提供了 int 结果,您试图将其隐式类型转换为 byte,这会给您带来编译时错误。
摘要 Char + Char = Int 并且 Char 不能直接存储 Int。
尝试这样做
char c2 = (char)('A' + c1);
这里你显式地将 int 值强制转换为 char 类型告诉编译器你已经准备好接受可能发生的有损转换
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |