Java007-类型转换

Java007-类型转换

一、自动类型转换

小范围类型的变量直接赋值给大范围类型的变量
范围大小:
1)byte < short < int < long < float < double,如

short sh = 20;
double d = sh;

2)char < int < long < float < double,如

char ch = 'a';
long l = ch;

二、表达式中自动类型转换

在表达式中,小范围类型的变量会自动转换成当前最大范围的类型,再运算。
范围大小:byte、short、char < int < float < double

        byte by = 1;
        float f = 2.1f;
//        byte re = by + f; //报错,改为int类型试试
//        int re = by + f;  //报错,改为float类型则不报错
        float re = by + f;  //不报错

注意:在表达式中,byte、short、char是直接转换成int类型运算,即没有比它们大范围的类型时结果类型为int。

        //例1:仅含byte、short、char
        byte b = 1;
        short sh = 3;
        char ch = 'A';
//        byte rs = b + ch + sh;  //报错,改为char类型试试
//        char rs = b + ch + sh;  //报错,改为short类型试试
//        short rs = b + ch + sh; //报错,改为int类型则不报错
        int rs = b + ch + sh;     //不报错
        System.out.println(rs);
        
        //例2:仅含short
        short s1 = 3;
        short s2 = 3;
//        short s3 = s1 + s2; //报错,改为int类型则不报错
        int s3 = s1 + s2;     //不报错
        System.out.println(s3);

因此,除仅含byte、short、char外,表达式的最终结果类型由表达式最高类型决定。

三、强制类型转换

强制类型转换是指强行将大范围类型的变量或数据赋值给小范围类型的变量。
强制类型转换导致的问题有:
1)可能出现数据丢失。
2)小数强制转换成整数是直接不要小数,只保留整数。

        //	1)可能出现数据丢失
        byte b = (byte)129;
        System.out.println(b);//结果为 -127
        //	2)小数强制转换成整数是直接不要小数,只保留整数
        int i = (int)3.98;
        System.out.println(i);//结果为 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值