Java中数据类型的自动转换与强制转换


在开发程序时我们会经常的将某种数据类型转为其他数据类型。转换过程中分为以下情况:

1.java编译器自动帮我们进行转换->隐式转换(条件符合要求) <-(自动类型转换)

需满足以下条件:
需要原数据类型与被转换的数据类型兼容
被转换的数据类型大于原数据类型

2.手动强制进行数据类型的转型-> 强制转换 <-又被称为缩小转换(可能造成数据损失)
使用以下格式进行转换
(被转换的数据类型) 变量名 =(被转换的数据类型)(原数据类型 | 原数据类型字面值)



一 .自动类型转换

在Java中数据类型型会在合适的情况下进行自动转换
代码如下(自动转型):

        byte a = 70;
        byte bb = 80;
        byte c = 90;
        //a乘b的结果已经超出了byte表达范围,(java编译器自动转为int型)
        int i1 = a * b /c ;

        float f1 = 39.343f;
        float f2 = 32.11f;
        // f1 和 f2 的值没有超出 float类型但可以正常的赋值给double(java编译器自动转为double型)    
        double d3 = f1 * f2;

        //误区

        //虽然 bbb 乘以 2 的值并没有超出 表达范围 但下行代码仍然保错
        byte bbb = 20;   
       //  bbb = bbb *2 ; 本行代码保错,原因请看下面注释:
        //这是因为 java 的自动类型提升机制
        /*java的类提升机制:byte short char 提升为 int
        * 有一个操作数为long则整个表达式为long
        * 有一个操作数为float则整个表达式为float
        * 有一个操作数为double则整个表达式为double
        * 所以上面的 bbb 变量 进行乘法运算 被提升为了int(无法再容纳自身的byte类型所以保错)
        * ------------如果以上多个类型存在则按照运算顺序进行提升-------
        * */

二.强制类型转换(缩小转换)
扩大转换java编译器已经帮我们做了 (〃‘▽’〃)

代码如下(示例):

 	    //以下将int 型 257 强制转换为 byte
        byte b ;
        int i = 257;
        b = (byte) i;
        //发生了值溢出情况,等于 i % byte类型范围的绝对值之和  = 1;
        System.out.println("将int 257 强转为byte后= "+ b); //输出结果为1
        //将浮点数转为整形将发生截尾操作
        int tempInt = (int) 3.14;  // 3
        //将整数转为浮点数会在小数位补0,
        double tempDouble = (double) tempInt;// 3.0
        //特别说明 boolean值不能参与任何类型转换!!!
 	


总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值