数据类型范围顺序: byte < short < char < int < long < float < double
规则:
整数类型之间,范围小的可直接赋值给范围大的(如byte → int)。
byte、short、char参与运算时自动转为int。
示例:
byte b =100;int i = b;// 自动转换,i = 100char c ='A';// 'A'的ASCII码为65int num = c +1;// c自动转为int,num = 66
(二)强制类型转换(显式转换)
定义:大范围类型转为小范围类型,需手动添加类型转换符(数据类型)。
格式:
数据类型 变量 =(数据类型) 值或变量;
注意事项:
可能导致数据丢失或溢出(如整数超出目标类型范围)。
浮点型转整型会直接截断小数部分。
示例:
int i =150;byte b =(byte)i;// 150超过byte范围(-128~127),结果为-106(二进制溢出)double d =3.9;int num =(int)d;// num = 3(直接丢弃小数部分)
(三)表达式的自动类型提升
规则:表达式中,小范围类型自动转为最大范围类型后再运算。
示例:
byte b1 =10, b2 =20;int sum = b1 + b2;// b1、b2自动转为int,sum = 30int i =10;double d = i +3.14;// i自动转为double,d = 13.14
三、典型案例
(一)方法重载案例
publicclassMethodDemo{// 计算两个整数的和publicstaticintsum(int a,int b){return a + b;}// 计算三个整数的和(重载方法)publicstaticintsum(int a,int b,int c){return a + b + c;}// 计算两个小数的和(重载方法)publicstaticdoublesum(double a,double b){return a + b;}publicstaticvoidmain(String[] args){System.out.println(sum(1,2));// 3System.out.println(sum(1,2,3));// 6System.out.println(sum(1.5,2.5));// 4.0}}
(二)类型转换案例
publicclassTypeConversionDemo{publicstaticvoidmain(String[] args){// 自动类型转换short s =100;long l = s;// 自动转换,l = 100// 强制类型转换int i =200;byte b =(byte)i;// 200的二进制为11001000,强制转byte后为-56(补码规则)System.out.println(b);// 输出:-56// 表达式类型提升char c ='B';// ASCII码66int result = c +3.5;// c转为int(66),3.5转为double,result自动为double(69.5)System.out.println(result);// 输出:69.5}}