为什么 Java 中 可以直接用 int 变量存储 char 数据类型

本文探讨了Java编程中基础数据类型之间的转换,特别是char和int之间的转换。当将int转换为char时,实际是将十进制值转换为对应的ASCII字符。这个过程在算术运算中体现出了数据类型的提升效果,即所有运算首先提升到int类型。对于int到char的转换,不需要强制类型转换,因为它们之间可以直接操作。文章通过实例展示了这种转换行为,并强调了不同类型间转换的规则。
摘要由CSDN通过智能技术生成

初学 Java 时, 老师提出了一个很有意思的现象: 

        //基础数据类型之间进行转换
        int number = 68;
        char chart = (char)number;
        System.out.println("number = " + number);
        System.out.println("chart = " + chart);

        char chart_2 = 'E';
        int number_2 = chart_2;
        System.out.println("number_2 = " + number_2);
        System.out.println("chart_2 = " + chart_2);

        //****************打印结果*****************
        number = 68
        chart = D
        number_2 = 69
        chart_2 = E

当时很迷惑,今天看到 《Think in Java》中进行了详细的解释。

大意:在 char、byte 和 short 中,您可以看到使用算术运算符进行提升的效果。对任何这些类型的每个算术运算都会产生一个 int 结果,该结果必须显式转换回原始类型(可能会丢失信息的缩小转换)以分配回该类型。但是,对于 int 值,您不需要强制转换,因为一切都已经是 int 了。

这就是为什么可以直接用 int 数据类型存储 char 值,且可以直接打印,值为 十进制的ASCII 码 。

In char, byte, and short, you can see the effect of promotion with the arithmetic
operators. Each arithmetic operation on any of those types produces an int result, 
which must be explicitly cast back to the original type 
(a narrowing conversion that might lose information) to assign back to that type. 
With int values, however, you do not need to cast, because everything is already an int.

You can see that, with the exception of boolean, any primitive type can be cast to any
other primitive type.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值