缩小转换是指将一个能够容纳更大值的数据类型放入最多只能容纳较小值的数据类型中。
long l = 4L;
int i = (int)l;
然而,我不明白为什么将一个short转换为char是一种缩小转换,但我有直觉它与这两种数据类型的signed/unsigned有关,但我无法解释为什么。
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
表示负数。 - kennytm