类型转换
基本数据类型表示范围大小排序:
在变量赋值及算术运算的过程中,经常会用到数据类型转换,其分为两类:
-
隐式类型转换
-
显式类型转换
1 隐式类型转换
情形1:赋值过程中,小数据类型值或变量可以直接赋值给大类型变量,类型会自动进行转换
案例展示:
package com.briup.chap02;public class Test081_ImplicitTrans {public static void main(String[] args) { // int类型值 赋值给 long类型变量 long num = 10;System.out.println(num);// float类型值 赋值给 double类型变量 double price = 8.0F;System.out.println(price);char c = 'a';// char 赋值给 intint t = c;System.out.println(t);// 下面会编译报错//float pi = 3.14;//int size = 123L;//int length = 178.5;}
}
情形2:byte、short、char类型的数据在进行算术运算时,会先自动提升为int,然后再进行运算
案例展示:
public static void main(String[] args) {byte b = 10;short s = 5;// (byte -> int) + (short -> int)// int + int // 结果为 intint sum = b + s;// 下一行编译报错,int 无法自动转换为 short进行赋值//short sum2 = b + s;System.out.println(sum);
}
情形3:其他类型相互运算时,表示范围小的会自动提升为范围大的,然后再运算
案例展示:
public static void main(String[] args) {byte b = 10;short s = 5;double d = 2.3;// (byte10->int10 - 5) * (short->int5) -> 5 * 5 = 25// int25 + double2.3// double25.0 + double2.3// 结果:double 27.3,必须用double变量来接收该值double t = (b - 5) * s + d;// double赋值给float,编译报错// float f = (b - 5) * s + d;System.out.println(t);
}