问题:
回答:
Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。
可以分为:自动转换、强制转换
Java中的自动转换
特点:
1、系统自动完成的,不需要程序员手动修改代码
2、将取值范围小的类型 自动提升为 取值范围大的类型
具体实例
public static void main(String[] args) { int a = 1; byte b = 2; byte c = b + a; // 报错 //int类型和byte类型运算,结果是int类型 int d = b + a; System.out.println(d); }
注意:
整数类型直接写会默认为int
小数类型直接写默认为double
类型的范围大小:byte < short(char) < int < long < float < double
Java中的强制转换
特点:
1、需要程序员手动修改代码
2、语法:
范围小的类型 变量名 = (范围小的类型)范围大的类型的数据
3、从范围小 到 范围大(将取值范围大的类型
强制转换成取值范围小的类型
。)
具体实例
实例1
int i = 1.5; // 错误
double
类型内存8个字节,int
类型内存4个字节。1.5
是double
类型,取值范围大于int
。可以理解为double
是8升的水壶,int
是4升的水壶,不能把大水壶中的水直接放进小水壶去。
想要赋值成功,只有通过强制类型转换,将double
类型强制转换成int
类型才能赋值。
实例2
int类型和double类型运算,结果是double类型,int类型会提升为double类型
public static void main(String[] args) { int i = 1; double d = 2.5; double e = d+i; System.out.println(e); }
注意:
强制类型转换可能会造成数据的丢失哦,小伙伴们在应用时一定要慎重哦!
Boolean类型不能发生强制类型转换
byte \ short \ char 这三种数据类型发生数学运算时,会自动提升为int类型