gpt4 book ai didi

java - 为什么在某些情况下不能添加 int 和 char?

转载 作者:IT老高 更新时间:2023-10-28 20:30:25 25 4
gpt4 key购买 nike

为什么

char ch = '4';
ch = '4' + 2;

工作,但是

char ch = '4';
ch = ch + 2;

没有?

最佳答案

为了理解这一点,让我们考虑一下编译器在每个步骤中针对这两种可能性所做的工作。让我们开始:

ch = '4' + 2;

编译器将 '4' 转换为 int。于是就变成了

ch = 52 + 2;

然后编译器变成什么

ch = 54;

ch是char,允许编译器将54转换为char,因为这样可以证明转换没有损失。

现在让我们考虑第二个版本:

ch = ch  + 2;

ch 在编译时没有已知值。这样就变成了

ch = ((int) ch) + 2;

现在编译器不能证明这个(一个int)的结果可以存储在一个char的范围内。因此它不会自动缩小范围,并将其报告为错误。

编辑1:

如果编译器可以证明变量永远不会改变,并且是可内联的。然后可以将第二种形式变成第一种形式。 Subir 指出,添加“final”使这成为可能。虽然如果编译器要执行更改分析,那么它在技术上能够在没有 final 关键字的情况下解决这个问题,但 final 确实让编译器和代码的读者更容易。

编辑2:

Java Language Spec 中介绍了将 int 缩小为 char 的内容。 ,链接由 Jon Skeet 友情提供。

关于java - 为什么在某些情况下不能添加 int 和 char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24608241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com