Java 类型转换

一、自动类型转换(隐式类型转换)

整型、实型(常量)、字符型数据可以混合运算。不同类型的数据先转化为同类型再进行运算

自动转换按从低级到高级顺序:

          char

           ↓

Byte→short→int→long---›float→double

自动转换有以下规律:

小的类型自动转化为大的类型

整数类型可以自动转化为浮点类型,可能会产生舍入误差

1.自动类型转换(隐式转换)         

小的类型自动转化为大的类型         

byte A = 70;

                  int B = A + 30;

                  System.out.println(B);

byte小类型转int大类型

1.1自动类型转换

byte a = 0;

                int b = a;

                long c = a;

                float d = a;

                double e = a;

System.out.println("b="+b);

               System.out.println("c="+c);

               System.out.println("d="+d);

               System.out.println("e="+e);

        从小的类型转为高的类型,byte转int,long,float,double

        得出结果:0  0  0.0  0.0

1.2整数类型可以自动转化为浮点类型,可能会产生舍入误差

           float A = 2 + 10f;

                  float B = A - 11.9f;

                  System.out.println(B);

           结果: 0.10000038

           精准度和准确度是有差距的,float精准度的准确姓流失

二、强制类型转换(显式类型转换)

1.int是要强制类型转换后的数据类型

强制类型转换可能导致溢出或损失精度,如下图:

强制转换类型,在要强制转换类型的前面加上括号,然后再括号里面加上你要转换的类型。

有些数据经过转换运算后,精度就丢失了,上图的例子就可以明确看出

由上面得出,int55.55强制转换,由于55.55转成了55,同样的22.22转成22,得出x的结果是77,(double)x这个double类型的强制转换,经过强制转换,x的值变为55.0,而(double)1.1也强制转换成 double类型,所以变成1.0,最后的出来的值为79.199999999999999

因为类型转换导致精度损失,使55.55变成55。。。1.1变成 1

运行结果得出来的值分别为:

X=77

Y=79.199999999999999

2.浮点数转换整数是通过舍弃小数得到的,而不是四舍五入

int A= (int) 11.7;

int B = (int) -21.6;

            System.out.println(A);

            System.out.println(B);

要把11.7转成int整型,在转换值前(也就是11.7前)加括号,把要转换的类型写在括号里,进行强制转换,转换后丢失精度

结果:

A=11

B=-21

1.1容量大类型转容量小类型

在把容量大的类型转换为容量小的类型时必须使用强制类型转换

int A=120;

         byte B=(byte) A;

         System.out.println(B);

  • 19
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值