import java.util.*;
class Hash
{
public static void main(String[] args)
{
char A='a'+3;
int i=3;
char B='a'+i; //错误:可能损失精度;为什么这个错了,上面的一个没错?
}
}
分析:
char A='a'+3; a和3都是char类型的相加,没问题
int i=3; 定义int 类型的变量i的值为3
char B='a'+i; 这种写法是错误的,int类型占用4个字节,char类型占用2个字节,JAVA是不容许int自动转换为char类型的
如果要强制转换是要这样写的char B=(char) ('a'+i);
但是这样会损失精度的 int的2进制是32位 char的2进制是16位 int强制转换为char的话,JAVA只截取int的32位的后16位,精度就这样损失了