隐式转换与强制转换

本文介绍了编程中隐式转换(自动类型提升)的概念,即小类型数据赋值给大类型变量时的自动升级,以及强制转换的必要性。通过实例展示了不同类型之间的运算过程和可能产生的精度损失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、隐式转换

 定义:

 也叫自动类型提升。

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

就是小的给大的,可以直接给。

两种提升规则:

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

取值范围从小到大的关系:注意遵循大小关系!!!

​ byte   short   int   long   float   double

案例:

案例一:

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

解释:

​ 取值范围的顺序中: int  double

int型提升为double型

案例二:

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

解释:

​ 取值范围的顺序中:byte   int

byte型提升为int型

案例三:

int i = 10;
long n = 20L;
??? result = i + n;
问变量result是什么类型的?

解释:

​ 变量i是int类型的,变量n是long类型的。

​ 取值范围的顺序中: int long 

​ 变量i里面的值会自动提升为long类型的,结果其实就是两个long相加,result是long类型的。

案例四:

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类型的。

二、强制转换

 定义:如果要把一个取值范围大的数据或者变量赋值给另一个取值范围小的变量。是不允许直接操作。

​ 如果一定要这么干,就需要加入强制转换。

书写格式:

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

​ (要转成什么类型的,那么就在小括号中写什么类型就可以了)

案例:

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、付费专栏及课程。

余额充值