我的脑袋卡在了 SCJP 6 学习指南上,对他们在这里提出的观点感到困惑。
关于将 int 转换为 char,他们说以下内容是完全合法的,但会损失精度(我完全可以理解):
char d = (char)-98;
char c = (char)70000;
System.out.println("d = " + d + " c = " + c);
结果是:
d = ? c = ?
这里让我感到困惑的一点是,在这两种情况下,生成的 char 值都作为问号打印出来。我本来期望一个无意义的数值,可能与原始值几乎没有关系或根本没有关系,但仍然是数字。
为什么结果是问号?我不明白这里的问号是“精度损失”吗?
我在 SO 上查看了许多与 char 相关的问题,也用 google 搜索了很多,但找不到答案。
它与其他 JVM 有何不同?还是对所有超出范围的字符转换的标准响应?
最佳答案
当您将 char 附加到 String 时,附加的是 char(例如“a”),而不是它的数值(例如 97)。如果你想知道 char 的数值是多少,使用
System.out.println("d = " + ((int) d) + " c = " + ((int) c));
关于java - 将超出范围的 int 转换为 char。精度损失真的是一个问号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13221158/