01_类型转换
说明
数据能够发生转换的前提:
属于同一种数据类型:都是数值型
在java
中,一些数据类型之间可以相互转换的,分为2种情况,自动类型转换(隐式转换)和强制类型转换
隐式转换
把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。这种转换方式是自动的,直接书写即可。例如
// 将int类型的10直接赋值给double类型
double num = 10;
// 输出10.0
System.out.println(num);
类型从小到大的关系图
整数默认是int
类型,byte
、short
、和char
类型数据参与运算均会自动转换为int
类型
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2;
// 第三行代码会报错,b1和b2会自动转换为int类型,计算结果为int,int赋值给byte需要强制类型转换。
// 修改为:
int num = b1 + b2;
// 或者:
byte b3 = (byte) (b1 + b2);
boolean
类型不能与其他基本数据类型相互转换
public class Demo1Conversion {
/*
隐式转换: 将数据类型中, 取值范围小的数据, 给取值范围大的类型赋值, 可以直接赋值
数据类型的取值范围:
byte --> short --> int --> long --> float --> double
char --> int --> long --> float --> double
字符自动转成int类型是根据字符对应的ASCII值
'0' --> 48
'A' --> 65
'a' --> 97
细节一:如果有更高类型的数据参与运算、其它的类型会提升为更高类型进行计算。
细节2:byte、short、char的变量参与运算、不管是否有其它类型参与、都会提升为int计算。
*/
public static void main(String[] args) {
int a = 10;
double b = a;// 隐式转换 : int自动转成double
System.out.println(b);
char ch1 = '0';
int i1 = ch1;// 隐式转换 : char自动转成int
System.out.println(i1);
// 细节一:如果有更高类型的数据参与运算、其它的类型会提升为更高类型进行计算。
double d1 = 10.0+5;
System.out.println(d1);
// 细节2:byte、short、char的变量参与运算、不管是否有其它类型参与、都会提升为int计算。
byte b1 = 10;
byte b2 = 20;
int b3 = b1 + b2;
System.out.println(b3);
}
}
强制转换
把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
强制类型转换格式:
目标数据类型 变量名 = (目标数据类型) 值或者变量;
例如:
double num1 = 5.5;
int num2 = (int) num1; // 将double类型的num1强制转换为int类型
System.out.println(num2); // 输出5(小数位直接舍弃)