Java有两种类型转换方式:自动类型转换和强制类型转换
一.自动类型转换
1.当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统可以进 行自动类型转换;就如同有两瓶水,当把小瓶的水倒入大瓶中时,不会有任何问题;否 则需进行强制转换.
2.自动类型转换图:
箭头左边的数值类型可以自动转换为箭头右边的数值类型
byte不能自动类型转换为char型
3.当把任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动转换类字符 串类型,如果希望把基本类型的值转换为对应的字符串时,可以把基本类型的值和一 个空字符串进行连接。
eg:System.out.println(3+4+"Hello!");//输出7Hello!
System.out.println("Hello!"+3+4);//输出Hello!34,先进行"Hello!"+3运算,得到 Hello!3字符串,再和4计算,4也被转换成字符串进行处理
二.强制类型转换
1.当上图从右边类型转换到左边类型,需进行强制转换
eg:float a=(float)5.6;//因为5.6默认为double类型,需要强制转换
2.将大瓶子的水倒入小瓶子,当大瓶子里的水超过小瓶子里的水时,容易引起溢出
3.用于将字符串类型转换为基本类型的静态方法:
parseXxx(String str)
boolean对应Boolean,byte对应Byte,short对应Short,int对应Integer,long对应 Long,char对应Character,float对应Float,double对应Double
eg:String a="45";
int iValue=Integer.parseInt(a);
三.表达式类型的自动提升
当一个算术表达式中包含多个基本的数据类型时,整个算数表达式的数据类型将自动 提升,规则如下:
a).所有的byte,short,char类型被提升到int类型
b).整个算数表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型
eg1:short sValue=5;
sValue=sValue-2;//错误,sValue-2的值已经自动提升到int类型,不能赋值给 short类型
eg2:int val=3;
int iResult=23/val;
System.out.println(iResult);//将会输出7,结果自动转换为等号左侧是最高等级 操作数同样的类型(int)
当字表达式中包含字符串,加号(+)放在字符串和基本类型之间时,加号是一个字符串 连接运算符,而不是进行加法运算
eg:System.out.println("Hello!"+'a'+7);//输出字符串Hello!a7
System.out.println('a'+7+"Hello!");/*输出字符串104Hello,先将a自动提升到int类 型,即a对应的ASCII值97,得到104,再进行运算,104自动转换为字符串*/