Java中的基本数据类型转换:
所谓数据类型之间的相互转换,就是将变量从当前的数据类型转换为其它数据类型。在Java中数据类型之间的相互转换可以分为一下三种情况:
1.基本数据类型之间的相互转换;
2.字符串与其它数据类型之间的相互转换;
3.引用数据类型之间的相互转换;
在这里只介绍基本数据类型之间的相互转换。在对多个基本数据类型的数据进行混合运算时,如果这几个数据并不属于同一基本数据类型,例如在一个表达式中同时包含整型,浮点型和字符型数据,需要将他们转换为统一的数据类型然后才能进行计算。
基本数据类型之间的相互转换又分为两种情况,分别是自动类型转换和强制类型转换。
************************************自动类型转换****************************
当需要从低级类型向高级类型转换时,编程人员无需进行任何操作,Java会自动完成从低级向高级数据类型的转换。低级数据类型是指取值范围相对较小的数据类型,高级类型则指的是取值范围相对较大的数据类型,例如long型相对于float型是低级数据类型,但是相对于int型则是高级数据类型。在基本数据类型中,除了boolean型外均可参与算术运算,这些数据类型从低到高的排序如下:
byte - short - char -int -long - float - double
低----------------取值范围------------------>高
在不同数据类型间的算术运算中,可以分为两种情况进行考虑,一种是在算术表达式中含有 int ,long,float或double型的数据,另一种是不含有上述4种类型的数据,即只含有byte ,short或char型数据
<1>在算术表达式中含有 int ,long,float或double型的数据
如果在算术表达式中含有 int ,long,float或double型的数据,Java首先会讲所有的数据类型自动转换为表达式中数据类型最高的数据类型,然后再进行计算,并且计算结果也为转换后的类型
byte b = 75;
char c = 'c';
int i = 22344;
long l = 4324466l;
long result = b*c-i+l;
所有的数据类型全部转换为long型,运算结果也为long型,也可以赋值给比long类型高的float或double
<2>表达式中只含有byte ,short或char型数据
如果在算术表达式中只含有byte,short,或char型数据,java首先会将所有变量的类型自动转换为int型
byte b = 33;
short s = 3222;
char c = 'c';
int result = b+s*c;
所有类型会自动转换为int型 ,运算结果也为int型
即使是 short s1 = 67;short s2 = 42;int result =s1+s2;Java也会首先自动将s1,s2转换为int型,然后再进行计算,计算结果也为int型。
对于数据类型为byte ,short ,int ,long,float,double的变量,可以将数据类型相对较小的数据或变量,直接赋值给数据类型相对较大的变量,但是不可以将数据类型教大的变量赋值给数据类型小的变量。
对于数据类型为char的变量,不可以将数据类型为byte或short的变量直接赋值给char型变量但是可以将char型变量直接赋值给int ,long,float,或double的变量。
******************************强制类型转换*********************************
如果需要把数据类型相对较高的数据或变量赋值给数据类型相对较低的变量,就必须进行强制类型转换。例如Java默认7.5为double型数据,将其赋值给int型变量时需要强制类型转换
int i = (int)7.5;
上面代码中在数据 7.5之前加了(int),意识就是把 7.5 强制转换为 int型;
|