Java基本数据类型转换
学习目标:
掌握Java的基本数据类型转换学习内容:
1、转化规则
在8大基本数据类型中,boolean不属于数值类型,所以不参与转换,其他类型的转换规则如下。一般的来说(byte、short、char)是平级的,这三种类型相互之间不参与自动类型转换操作但可以进行强制转换操作。
转换方式:
按照转换方式,有两种(注意:boolean类型不参与类型转换):
-
自动类型转换:
范围小的数据类型直接转换成范围大的数据类型,小->大。 -
强制类型转换:
范围大的数据类型强制转换成范围小的数据类型,大->小。
注意:这里的大小指的不是占了多少字节的大小而是取值范围的大小。
2、自动类型转换
自动类型转换,也称为“隐式类型转换,就是把范围小的数据类型直接转换成范围大的数据类型。
- 转换规则:
byte、short、char—>int—>long—>float—>double - 注意事项:
byte、short、char相互之间不转换,他们参与运算首先转换为int类型
语法格式:
java 范围大的数据类型 变量 = 范围小的数据类型值;
代码如下:
// 把int类型变量转为long类型
long longNumber = 17;
System.out.println("longNumber = " + longNumber);
// 整数默认为int类型
// 把long类型转换为float类型
float f1 = longNumber;
System.out.println("f1 = " + f1);
//把float类型转换为double类型
double d = f1;
System.out.println("d = " + d);
//定义两个int类型的变量
int a1 = 2;
int b1 = 3;
int c1 = a1 + b1;
System.out.println("c1 = " + c1);
// 定义一个byte类型,一个int类型
byte b2 = 2;
int c2 = 3;
System.out.println(b2 + c2); // 输出位一个int类型的数字5
// byte、short、char类型参与运算时把自己提升为int类型
// byte d1 = b2 + c2; b2 + c2计算结果为int类型,用byte类型去接受会编译报错
int d3 = b2 + c2;//编译通过
System.out.println("d3 = " + d3);
运行结果:
longNumber = 17
f1 = 17.0
d = 17.0
c1 = 5
5
d3 = 5
Process finished with exit code 0
3、自动类型提升
当一个算术表达式中,包含多个基本数据类型的常量或变量(boolean除外)时,整个算术表达式的结果类型将在出现自动提升,其规则是:
- 所有的byte、short、char类型被自动提升到int类型,再参与运算
- 整个表达式的最终结果类型,被提升到表达式中类型最高的类型
System.out.println('a' + 1); // 打印出来为98,char类型的 'a' 在ASCLL表中对应97,计算中自动转换成int类型。
byte b = 22; b = b + 11;//编译出错,此时结果类型应该是int
// 小数默认为double类型,3.14在该算术表达式中为最高类型,计算结果自动提升到double类型,所以用double类型的d1接受计算结果
double d1 = 123 + 1.1F + 3.14 + 99L ;
4、强制类型转换
强制类型转换,也称为“显式类型转换”,就是把范围大的数据类型强制转换成范围小的数据类型。
语法格式:
范围小的数据类型 变量 = (范围小的数据类型)范围大的数据类型值;
注意:一般情况下不建议使用强转,因为强转有可能损失精度以及溢出的情况
int a = 2;
byte b = 3;
// 自动类型转换
// 1.a和b做加法运算
// 2.因为byte short char参与运算的时候自动提升到int,所以最终结果就是int类型的 // 3.如果c定义成byte,此时需要强制转换
int c = a + b;
//强制类型转换,把int转换成byte
byte d = (byte) (a + b);
//把double转换为int类型
int i = (int)3.14;
System.out.println(i); // 打印结果为3,精度丢失
总结:
以上就是Java中数据类型转换了,代码仅供参考。