跟着姜少学Java基础编程之二:类型转换

本文详细介绍了Java语言中的数据类型转换,包括基本数据类型转换和引用数据类型的转换。重点讲解了基本数据类型转换中的隐式转换和强制转换,以及转换过程中可能发生的精度丢失等问题。

本篇主要介绍Java语言中的数据类型转换。

数据类型转换,主要是指不同类型的数据在变量赋值、传递和计算过程中,需要从一种数据类型转变为另外一种数据类型。
主要分为两类:基本数据类型转换和引用数据类型的转换。其中基本数据类型转换,主要是上一篇讲的8种基本数据类型之间的类型转换;引用数据类型的转换,主要是指数组、类对象和接口,此处暂不探讨引用数据类型的转换。

基本数据类型转换又分为隐式转换和强制转换。

2.1 隐式转换

隐式类型转换也叫自动类型转换,该类型转换按照如下的方向自动发生转换:byte ->char(short) ->int ->long ->float ->double

注意:
1)整数之间的自动类型转换不会发生精度丢失,但整数自动转换为浮点数,有可能发生精度的丢失。
2)Java的表达式具有提升规则,比如表达式中有一个double型的数据参与运算,最终表达式的值就是double型。
3)byte、char与short参与运算时,各自先转为int型再参与运算。
4)int的直接量可以直接赋值给byte、char和short类型变量,只要不超过其范围即可。

    long num1 = 100;//int型数据100自动转为long型赋值给num1

    long num2 = 1234567890L;
    float num3 = num2;//long型数据num2自动转为float
    System.out.println(num3);//输出结果为1.23456794E9,发生精度丢失

    byte num4 = 10;
    char c1 = 'A';
    System.out.println(num4+c1);//输出75,字符A自动转为int型65再参与运算

    //byte范围为-128~127,int数值100直接赋给num5不发生错误
    byte num5 = 100;
    byte num6 = 200;//int数值200超出了byte范围,发生编译错误

2.2 强制类型转换

当我们想把double类型转换为int类型时,自动类型转换不能满足我们的要求,此时,我们需要强制类型转换。强制类型转换的语法:
(目的类型)原数据

注意:
1)强制数据类型转换有可能发生精度的丢失。
2)强制转换的数据类型要兼容,并不是任何数据类型之间都可以强制转换


   int num7 = (int)10.5;//double型数据10.5强制转为int型,舍弃小数
   System.out.println(num7);//输出10
   byte num8 = (byte)100L;//该强制类型转换没有精度丢失,因为100未超btye范围
   byte num9 = (byte)200L;//输出-56,因为200L强制转为byte丢失精度

   int num10 = (int)true;//编译出错,boolean数据与int等数据类型不兼容,不能强制转换

不管是自动类型转换,还是强制类型转换,如果可能发生类型转换,就要考虑到丢失精度的可能性,以防止更改了期望的运算结果,造成不必要的损失。

下一篇我们介绍变量相关的知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值