【发布时间】:2016-06-13 05:44:49
【问题描述】:
缩小转换是将可以容纳较大值的数据类型转换为最大可以容纳较小值的数据类型。
long l = 4L;
int i = (int)l;
但是我不明白为什么短到 char 是一种缩小转换,但我直觉它与这两种数据类型的有符号/无符号有关,但我无法解释原因。
short s = 4; // short max value is 32767
char c = (char)s; // char max value is 65535
看起来这将是一个扩大转换,或者至少既不缩小也不扩大,因为它们都是 16 位并且可以保存相同数量的值。
System.out.println((int)Character.MIN_VALUE); //0
System.out.println((int)Character.MAX_VALUE); //65535
System.out.println(Short.MIN_VALUE); //-32768
System.out.println(Short.MAX_VALUE); //32767
//65535 = 32768+32767
【问题讨论】:
-
你不能用
char表示负数。