类型转换分为基本数据类型的类型转换和引用数据类型的类型转换
-
基本数据的类型转换
1、向上转型(自动转型):低位向高位
2、向下转型(强制转型):高位向低位
例子:
public static main(String[] args){
byte b = 3;
byte b = b + 1;
System.out.println(b);
}
执行程序后发现报错,原因:
由于b
是byte
类型,而byte
类型是由1个字节8位组成,1是整数默认类型为int
,而int类型由4个字节32为组成,再做运算时,8位的byte
类型会自动提升(向上转型)为32位的int
类型,此时=
两边的类型就会不统一,因此会报错,那么就需要让=
右边做类型转换,转换后的代码如下:
byte b = (byte)(b + 1);
将32位 int
类型强转(向下转型)为8位的byte
类型
-
引用类型的类型转换
1、由于子类是继承父类,所有子类可以很自然的向上转型为父类
2、父类转换成子类需要强制转换
例如:
class Parent{
}
class Child extends Parent{
}
Child类型向上转型为Parent类型
Parent p = new Child();
Parent类型向下强转为Child类型
Child c = (Child)new Parent();
- 注意比较特殊的一种
如下代码:
System.out.println('a'+1);
输出结果:
98
由于字符a
在ASCII编码表中对应的值为十进制的97
因此输出结果为98。
注意
每一个字符在编码表中都有其对应的数值。
网友评论