数据类型转换
boolean类型不参与类型转换
自动类型提升:隐式类型转换:
从小范围类型 → 大范围的数据类型
强制类型转换:显示类型转换:
从大范围类型 → 小范围类型
(有可能会损失精度)
小范围数据类型 变量名 = (小范围数据类型)大范围数据类型;
int j = 1235;
byte i = (byte) j;
注意:
1.运算逐渐向数据类型大的靠拢
如果多个类型参与运算,最终的结果的数据类型为最大的数据类型,如果这个类型小于int,结果提升成为int类型,如果大于int,结果为参与运算的最大的数据类型
2.如果给byte,short,char类型赋值,必须是其范围内的int类型的常量才能成功赋值(在不用强转的情况下)
数据转换示例:
/**
* 测试数据类型转换
*/
public class Test {
static int a;
public static void main(String[] args) {
//自动类型提升
int i = 7;
byte j = 5;//这其实就是int常量赋值的特例
i = j;//自动类型提升byte => int
double b;//浮点数默认类型
b = 3.2F;//float => double
//强制类型转换
int l = 5;
byte k = (byte)l;//int => byte
char m = 7;
//char n = -2;//char [0 , 65535]
short o =(short) a;
float p = (float)3.2;
System.out.println(a);
System.out.println(b);
System.out.println(i);
System.out.println(j);
System.out.println(o);
System.out.println(p);
System.out.println(l);
System.out.println(k);
System.out.println(m);
}
}
控制台显示:
0
3.200000047683716
5
5
0
3.2
5
5
整理叙述
数据类型的范围范围由小到大
byte → short → char → int → long → float → double
下述的大小指数据类型
小转大 不会报错 唯一要注意的是char类型没有负值
大转小 除了int型常量去赋值 在byte short char各自范围内的情况之外 都需强转