JAVA基础——基本数据类型间的转换及运算


在Java中,基本数据类型包括byte,short,int,long,float,double,char,boolean。除了boolean类型不能参与运算外,其它的基本数据类型之间可以相互转换及运算。

自动类型转换

小容量向大容量转换称为自动类型转换,系统会自动进行转换,比如:

long a = 12345;

系统自动将int类型转换成了long类型,编译不会报错,也可以正常运行。
容量从小到大的排序为:
byte < short(char) < int < long < float < double。
其中 short和 char 都占用两个字节,但是char没有负数,可以表示更大的正整数;
浮点型的容量一定比整型的容量大,因为浮点型的内存结构和整型的内存结构不同,不能以为4字节的float容量要比8字节的long容量小。
浮点型的内存结构可以参加我的上一篇博客:
浮点型内存结构

强制类型转换

大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用。
如:

byte a = (byte)12345;

将int类型强制转换为byte类型,需要加强制转换符。
强制类型转换实际上是直接截取了int类型中多出来的字节,将4字节截取成了1字节,所以会存在误差。
如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接对其赋值。
如:

byte a = 123;

由于123在byte的取值范围(-128——127)之内,所以不需要将int类型强制转换为byte类型。

byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算

当byte,short,char类型做混合运算时,会各自先转换为int类型,再互相做运算,如:

public class Test {
    public static void main(String[] args) {
        byte a = 1;
        short b = 2;
        char c = 'a';
        System.out.println(a+b+c);
    }
}

字符a会根据ASCII码转换为int类型的整数97,byte类型的a和short类型的b也会转换成int类型,最后再做运算,输出结果:

输出结果

多种数据类型混合运算,各自先转换成容量最大的那一种再做运算

当有多种数据类型混合运算时,会先各自自动类型转换成容量最大的那一种,然后再做运算。如:

public class Test {
    public static void main(String[] args) {
        int a = 1;
        long b = 2l;
        float c =3.0f;
        double d = 4.0;
        double f = a+b+c+d;
        System.out.println(f);
    }
}

所有的数据类型都会先转换成容量最大的double类型,然后再做运算,最后的输出结果为double类型的浮点数:
输出结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHB爱Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值