前言
- 该文章为Java基础自学笔记
- 其他内容:Java基础学习笔记目录
- 学习用书:
《Java核心技术 卷Ⅰ 基础知识(第10版)》
《Java经典编程300例》 - 学习视频:https://www.bilibili.com/video/BV1Cv411372m
类型转换(基本数据类型)
引用数据类型的类型转换 --> 多态下引用数据类型的类型转换
- 不同类型的变量赋值给其他类型的变量
1.自动类型转换
- 类型范围小的变量,可以直接赋值给类型范围大的变量
- 自动类型转换的底层原理:
byte a = 12;
int b = a; // a=12
- 自动类型转换的其他形式:
-
表达式的自动类型转换:
- 在表达式中,小范围类型的变量会自动转换成当前最大范围的类型再运算
- 在表达式中,小范围类型的变量会自动转换成当前最大范围的类型再运算
-
注意事项:
- 表达式的最终结果类型由表达式中的最高类型决定
int i = 10;
long l = 100L;
long rs = i + l; // int + long结果为long,由最高类型long决定
- 在表达式中,byte、short、char是直接转换成int类型参与运算的
byte b = 1;
short s = 2;
int rs = b + s; // byte + short = int,在表达式中,byte、short、char直接转换成int类型参与运算
2.强制类型转换
- 类型范围大的数据或者变量,不能直接赋值给类型范围小的变量
- 可以强行将类型范围大的变量、数据赋值给类型范围小的变量:
数据类型 变量2 = (数据类型)变量1、数据 |
---|
- 强制类型转换底层原理:
int a = 20;
byte b = (byte)a; // b=20
- 注意事项
- 强制类型转换可能造成数据(丢失)溢出
int i = 1500;
byte j = (byte)i; // j=-36
- 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回
double d = 1.95;
int i = (int)d; // i=1
浮点数舍入运算: 使用Math.round()方法(round方法返回值为long类型)
int i = (int) Math.round(9.997); 结果为i=10
boolean类型强转为int类型: boolean ? 1 : 0