数据类型转换
为什么要数据类型转换?
Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。数据类型转换的种类
自动类型转换(隐式):
- 特点:代码不需要我们进行特殊处理,自动完成
- 规则:将数据取值范围小的类型 自动提升为 数据取值范围大的类型 。
案例演示:
package com.wu.day02; public class Demo1DataType { public static void main(String[] args) { System.out.println(1024);//默认类型为int System.out.println(3.24);//默认类型是double // 左边是long类型,右边是默认的int类型,左右不一样 long number = 1024;// int ---> long 符合了数据范围,从小到大的要求。发生了自动类型转换 System.out.println(number);//100 double number2 = 3.14F; // float -->double。符合了数据范围,从小到大的要求。 float number3 = 332L; // long ---> float .符合了数据范围,从小到大的要求。 } }
强制类型转换(显示)
- 特点:将 取值范围大的类型 强制转换成 取值范围小的类型。代码需要进行特殊的格式处理,不能自动完成。:
- 格式:范围小的类型 范围小的变量名称 = (范围小的类型)原本范围大的数据;
代码演示:
package com.wu.day02; public class Demo2DataType { public static void main(String[] args) { // 左边是int类型,右边是long类型 int---> long 不能自动完成. // 格式: int类型 变量名称 = (int类型)long类型; int number1 = (int) 6565L; float number2 = (float) 3.14; long number3 = (long) 2.314F; } }
类型转换注意事项:
- 强制类型转换一般不推荐使用,因为有可能发生数据溢出,精度损失。
int number1 = (int) 656513213234234356L; System.out.println(number1);//数据溢出。19743732 long number3 = (long) 2.314F; System.out.println(number3);//2 精度损失
- byte、short、char都可以发生数学运算。 运算时会先提升为 int ,在进行计算。
- 布尔类型,不能发生数据类型转换
- 在char类型和int类型计算的过程中,char类型的字符先查询编码表,得到对应的int数字,再和int类型计算。char类型提升 为了int类型。
编译器的两点优化:
优化1:
- 对于byte/shor/char三种类型来说。如果右侧的赋值的数值没有超过范围。javac编译器将会自动隐含为我们强制转换为对应的数据。超过了,直接报错.
优化2:
- 在给变量进行赋值的时候,如果右侧的表达式当中全部是常量。那么编译器将先计算出表达式的结果,在赋值。一旦表达式当中有变量参与,就不能这种操作了。
---

更多精彩