Java类型转换详解
最近有同学问:自动类型转换老是记不住,到底是大转小,还是小转大
其实这个不用死记硬背,很好理解,我们拿 int 和 short 来举例:
int 是 4 字节,也就是 32 bit,所以 int 的范围在 [-231,231-1] 也就是大概 [-21亿,21亿]
short 是 2 字节,也就是 16 bit,所以 short 的范围在 [-215,215-1] 也就是 [-32768,32767]
所以我们可以很明显的发现一个问题,short 转 int 是无论如何都不会超出范围的
既然不会超出范围,当然语言就可以自动为我们进行转化
如果 int 转 short 则需要强转,也就是:
public static void main(String[] args) {
short a = 1;
int b = 2;
short c = (short) (a + b);
}
如果 c 是 int 类型的则不需要强转,语言实现了自动转换
public static void main(String[] args) {
short a = 1;
int b = 2;
int c = a + b;
}
放在子类和父类中,这个关系依然成立(自动向上转型)
子类可以自动向上转为父类,但是父类转为子类的话就需要强转