基本数据类型之间的运算规则

目录

1. 隐式转换

1.1 概念

1.2 两种提升规则:

1.3 取值范围从小到大的关系  

1.4 小练习

案例一:

案例二:

案例三:

案例四:

案例五:

1.5 总结

2.强制转换

2.1 概念

2.2 案例


1. 隐式转换

1.1 概念

也叫自动类型提升。

就是把一个取值范围小的数据或者变量,赋值给另一个取值范围大的变量。此时不需要我们额外写代码单独实现,是程序自动帮我们完成的。

1.2 两种提升规则:

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

  • byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。

1.3 取值范围从小到大的关系  

byte short (char) int long float double

1.4 小练习

案例一:


double d = 10;
System.out.println(d);//10.0
解释:

10是整数,整数默认是int类型的。

而在取值范围的顺序中:byte short (char) int long float double

在赋值的时候把一个int类型的赋值给了一个double类型的。把一个小的赋值给一个大的是可以直接给的。

案例二:


byte b = 100;
int i = b;//可以成功赋值
解释:

因为byte的取值范围是小的,int的取值范围是大的,在底层进行了隐式转换,不需要我们额外写代码单独实现,是可以直接赋值。

案例三:


int i = 10;
long n = 100L;
double d = 20.0;
??? result = i + n + d;
问变量result是什么类型的?
解释:

变量i是int类型,变量n是long类型,变量d是double类型。

而在取值范围的顺序中:byte short int long float double

所以变量i和变量n里面的值在参与运算的时候,都会进行类型提升,变成double。

最终其实就是三个double进行相加,那么最终的结果就是double类型的。

案例四:


byte b1 = 10;
byte b2 = 20;
??? result = b1 + b2;//int
问变量result是什么类型的?
解释:

因为b1和b2都是byte类型的。所以在参与计算的时候,变量b1和变量b2里面的值都会自动提升为int类型的。最终其实就是两个int类型的相加,最终结果也是int类型的。

案例五:


byte b = 10;
short s = 20;
long n = 100L;
??? result = b + s + n;
问变量result是什么类型的?long
解释:

变量b是byte类型的,变量s是short类型的,变量n是long类型的。

byte,short,char类型的变量在参与运算的时候,变量里面的值会直接先提升为int。

第一步:变量b和变量s里面的值会先提升为int参与运算。

int + int + long

第二步:而long类型的取值范围是大于int的取值范围的。

所以变量b和变量s里面的值会再次提升为long。

long + long + long。

所以最终结果是long类型的。

1.5 总结

1.自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为

byte short (char) int long float double

2.有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的 那种数据类型,然后再进行计算。
3.byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
4.boolean类型不能与其它数据类型运算。
5.当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类 型的值将自动转化为字符串(String)类型。

2.强制转换

2.1 概念

将容量大的数据类型转换为容量小的数据类型。使 用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。

书写格式:

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

2.2 案例

public class OperatorDemo2 {
    public static void main(String[] args) {
        double a = 12.3;
        int b = (int) a;
        System.out.println(b);//12
    }
}

强制转换有可能会导致数据发生错误。(数据的精度丢失)

欢迎大家指点评论~ 点赞+关注⭐⭐⭐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值