java中的数据类型转换

版权声明:转载需要经过本人同意 https://blog.csdn.net/qq_35499112/article/details/84305149

一,强制类型转换
        1特点;不能自动完成,代码需要特殊格式处理
        2格式:范围小的类型 范围小的变量名 =(范围小的类型) 原本范围大的类型;

1,不建议使用强制类型转换,可能会造成数据损失

例如:左边int类型右边long类型
    

int num=100L;//编译会报错(数据类型不兼容,从long到int会发生数据损失)


 

   //long强制转化成int
    int num1=(int)100L;
    System.out.println(num);//输出100

注意long强制转化成int时不能超过int的范围,否则会出现数据损失,例如:

 //long强制转化成int
    int num1=(int)60000000000000L;
    System.out.println(num);//输出会小于上面的数

double向int类型转换,可能损失精度


int num=(int)8.9;//num结果是8

2,byte/short/char可以进行数学运算

例如加法运算

char a='A';
System.out.println(a+1);//结果输出66

计算机底层会用一个数字(二进制)65来代表字符A,一旦字符进行算术运算(如果有字符串就不会转化成数字,会直接进行字符串拼接),就自动转换成数字65

3,byte/short/char可以进行数学运算时会先被提升为int类型,然后在进行计算

byte num1=30;//注意byte的范围
byte num2=50;
byte num3=num1+num2;
System.out.println(num3);//会报错

理论上num1+num2=80在byte的范围内。但实际上是数据类型变成了int+int类型,因此num3需要用int类型来接收

int num3=num1+num2;

short类型和byte的运算

short num1=30;
byte num2=10;
short num=(short)(num1+num2);

num1+num2也先被提升为int类型+int类型,所以需要强制类型转换成short类型。

注意:强制类型转换时,逻辑上的数字不能超过short的范围

4,boolean类型不能进行强制类型转换
 

猜你喜欢

转载自blog.csdn.net/qq_35499112/article/details/84305149