假设
FileInputStream in=new FileInputStream ("file.txt");
char c=in.read();
给我一个错误:
java:不兼容类型:从int到char的可能有损转换
,但是
char b=87;
没有给我任何错误,而是给了我Unicode字符
- 既然
in.read()
返回的int值可以是Unicode字符,而charb变量则不返回,为什么charc变量会出错
因为int也可以是21470000000,并且不能转换为char。当您指定87时,编译器知道它在预期的字符边界内,但当您从其他地方接收它时,无法确保数据安全。
int类型通常为32位(取决于系统(,而char通常为8位。因此,您正在将32位转换为8位,并且可能会丢失数据。