我的头被 SCJP 6 学习指南困住了,对他们在这里提出的观点感到困惑。
关于将整数转换为字符,他们说以下内容是完全合法的,但是您会失去精度(我完全可以理解):
char d = (char)-98;
char c = (char)70000;
System.out.println("d = " + d + " c = " + c);
结果是:
d = ? c = ?
我感到困惑的一点是,在这两种情况下,生成的 char 值都只是作为问号打印出来。我本来期望一个无意义的数值,可能与原始值几乎没有关系或根本没有关系,但仍然是数字的。
为什么结果是问号?我不明白这里的“精度损失”只是一个问号吗?
我在 SO 上查看了许多与 char 相关的问题,也搜索了很多,但找不到答案。
它与其他JVM不同吗?或者它是对所有超出范围的字符转换的标准响应?