Java中数据类型转换可以分为两类:隐式类型转换和显示类型转换。
说在前面
- boolean 类型因为其自身的特殊性,不存在任何形式的类型转换;
- 在Java中,对于为声明类型的常量,整数则默认类型为int类型;浮点数则默认类型为double;
隐式类型转换
- Jvm编译期间自动进行的类型转换;
- 整数类型(byte/short/int/long)之间,占用字节数少的类型变量赋值给另外一个占用字节数多的类型变量;
如下:1234567int x = 30;byte bb1 = 30;//这里30是int类型,Jvm编译过程中进行隐式类型转换成了byte类型byte bb2 = x;//这里编译报错,因为x已经声明为int类型,赋值给bb2需要强制类型转换byte bb3 = (byte)x;//编译正确long y = x;//编译正确long z = 10000000000;//编译报错,这里10000000000已经超过int类型能表示的范围了long z2 = 10000000000L;//编译正确
显示类型转换
- 整数类型(byte/short/int/long)之间,占用字节数多的类型变量赋值给另外一个占用字节数少的类型变量;
如下:1byte bb3 = (byte)x;//编译正确