隐式转换和强制转换

本文详细解释了Java中的类型转换,包括隐式转换(如自动类型提升)和强制转换,以及它们在数值运算中的规则,特别关注了数值范围和可能引发的错误。
摘要由CSDN通过智能技术生成

类型转换的分类

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

取值范围的数值 --> 取值范围的数值
范例

public class HelloWorld {
    public static void main(String[] args) {
        int a = 10;
        double b = a;
    }
}

output
10.0

取值范围从小到大 !

byte < short < int < long < float < double
隐式转换的两种提升规则

  • 取值范围小的,和取值范围大的进行运算,小的会先提升成大的,再进行运算。
  • byte short char三种类型的数据在运算的时候,都会直接先提升成为int,再进行运算。
    请添加图片描述

隐式转换小结

取值范围:byte < short < int < long < float < double

什么时候转换?

数据类型不一样,不能进行计算,需要转成一样的才可以进行计算。

转换规则1

  • 取值范围小的,和取值范围大的进行运算,小的会先提升成大的,再进行运算。

转换规则2

  • byte short char三种类型的数据在运算的时候,都会直接先提升成为int,再进行运算。
    请添加图片描述

2. 强制转换

取值范围的数值 --> 取值范围的数值
如果把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接赋值的。如果一定要这么做就需要加入强制转换

格式:目标数据类型 变量名 = (目标数据类型)被强转的数据;

范例

double a = 12.3;
int b = (int)a;

!!强转数据时有可能发生错误!!

范例

int a = 300;//太大了
byte b = (byte)a;

byte-128 ~ 127,装不下int300.

练习

byte b1 = 10;
byte b2 = 20;
int result = b1 + b2;//正常
byte result = b1 + b2;//这里该如何修改?

代码演示

public class ArithmeticoperatorDemo3 {
    public static void main(String[] args) {
        byte b1 = 10;
        byte b2 = 20;
        byte result = (byte)(b1 + b2);//强制转换
        System.out.println(result);//30
    }
}
public class ArithmeticoperatorDemo3 {
    public static void main(String[] args) {
        byte b1 = 100;//数据过大
        byte b2 = 100;//数据过大
        byte result = (byte)(b1 + b2);
        System.out.println(result);//30
    }
}

请添加图片描述

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

whaleFall174

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

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

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

打赏作者

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

抵扣说明:

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

余额充值