关于Java数据基本数据类型转换的一些问题

本文总结一下Java基本数据类型在使用过程中需要注意的一些问题

1.对于小于int型的数据类型(byte char short)进行运算时,首先会把这些类型的变量值强制转为int型,对int类型的值进行运算,最后得到的值也是int类型的。因此如果把两个short类型的值进行运算,最后得到的结果也是int类型的。如果要得到short类型的结果,就必须显示地把运算结果转为short类型。

例入:short s1 =1; s1=s1+1;代码会在编译的时候报错,因为s1+1的运算的结果是int类型,正确的写法是s1=(short)(s1+1);

但是,需要注意的是,short s1=1;s1+=1;这个代码在编译的时候是可以通过的,因为s1+=1;(相当于s1=s1+1)中的+=会先把右边的s1转换为short类型,然后再进行运算。所以不出出现类型上的问题。

2.基本数据类型中除了boolean类型的其他7种数据类型与boolean类型不能进行相互转换。例如

int i=1;
if(i){
   System.out.println(i);
}
以上代码也会出现编译不通过的问题,因为if判断中i是int型的,它不能和boolean类型进行转换。

3.char类型的数据转为高级类型时,会转换为对应的ASCII码。

我们看代码:

   int[] array=new int[100];  
   for(int i=0;i

array[c]中的c为'a',会转换为对应的ASCII码,'a'的ASCII码为97,则打印的是array[97]。

4.short类型与byte类型的转换

short i =128;
byte b = (short)i;

上面的代码中,short类型的i转换为byte类型时,i对应的二进制位00000000 10000000,由于byte类型只占一个字节,在强制转换时,把前面的八位截掉,截掉后的值为二进制的10000000,转换为十进制也就是-128

5.自动转换按从低到高的顺序转换,不同类型数据之间的优先如下(优先级从低到高):

byte,short,char->int->long->float->double



你可能感兴趣的:(Java基础)