栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java - char, int conversions

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java - char, int conversions

第一个示例(编译)很特殊,因为加法的两个操作数都是文字。

以下是一些定义:

  • 一个转换
    int
    char
    被称为基本收缩转换,因为
    char
    是比较小的类型
    int
  • 'A' + 1
    是一个常量表达式。常量表达式(基本上)是一个表达式,其结果始终相同,并且可以在编译时确定。尤其是,
    'A' + 1
    是一个常量表达式,因为的操作数+都是文字。

的分配期间,缩小转换被允许byte,short并且char,如果分配的右手边是一个常量表达式:

此外,如果表达式[根据右手侧]是类型的常量表达式

byte
short
char
,或
int

如果变量的类型为byte,short或char,并且常量表达式的值在变量的类型中可表示,则可以使用缩窄的原始转换。
c + 1是不是一个常量表达式,因为c是非final可变的,所以对于分配发生编译时间错误。通过查看代码,我们可以确定结果始终相同,但是在这种情况下,不允许编译器执行该操作。

我们可以做的一件有趣的事情是:

final char a = 'a';char b = a + 1;

在那种情况下

a + 1
是一个常量表达式,因为它是一个用常量表达式初始化a的final变量。

警告“如果[…]值[…]在变量的类型中是可表示的”,则意味着将不编译以下内容:

char c = 'A' + 99999;

'A' + 99999
(其是
100064
,或
0x186E0
)太大,以适应于char,因为char是无符号16位整数。

至于后缀

++
运算符:

后缀增量表达式的类型是变量的类型。

在加法之前1,对变量的值和值执行二进制数值提升* 。如有必要,可通过将原始和变窄来对其进行变窄和/或在存储变量之前将其进行装箱转换为变量的类型。

(* 二元数字升级需要

byte
short
以及
char
运营商的操作数等+,并把它们转换成
int
或其他一些更大的类型。Java并不在整型小于做算术题int。)

换句话说,该语句

c++
;主要等同于:

c = (char)(c + 1);

(不同之处在于,如果将表达式的结果c++分配给某物,则该结果为增量c 之前的值。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411096.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号