java-隐式转换(自动类型提升)与强制类型转换

前言

在学习运算符的时候会遇到两个名词,一个是隐式类型转换,一个是强制类型转换

隐式类型转换也就是取值范围小的数值赋值取值范围大的变量

        int a = 10;
        double b = a;

强制类型转换就是将取值范围大的一个数值直接赋值取值范围小的变量

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

java中数值类型的范围大小比较:

double  >  float > long > int > short > byte

隐式转换:

隐式转换的提升规则

取值范围小的和取值范围大的进行运算时,取值范围小的会先提升为大的,再进行运算

例如:

int类型的a 与 double类型的b求和时,a先转换成double类型,此时a的数值为3.0,最终输出结果就是13.2

double b = 10.2;
int a = 3;
System.out.println(a+b);

byte short  char 三种类型的数据在计算时,都会先提升为int类型,然后再进行运算

byte类型的a 与 short类型的b 运算时,a跟b都会先转换成int类型,然后再进行运算

byte a = 10;
short b = 20;
System.out.println(a+b);

强制类型转换:

强制转换可能会导致数据错误

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

int a = 128;
byte b = (byte) a;
System.out.println(b);

上述将 int 强制转换成 byte ,byte类型的数值取值范围为 -128 -127 ,此时数据发生错误:

练习:

我现在需要a 与 b的和转换成byte类型

byte a = 12;
byte b = 14;

在强制类型转换时,一定要明确强转的到底是谁,例如下面这段代码,这是错误的

byte a = 12;
byte b = 14;

byte c = (byte)a + (byte)b;

正确的写法应该是,将a与b的和进行强转,并且byte类型的 a与b求和时,会自动提升至int类型来求和,也就是此时 a+b的和是int类型,所以需要强制类型转换

byte a = 12;
byte b = 14;

byte c = (byte)(a + b);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值