gpt4 book ai didi

java - 为什么Java中一个字符减去另一个字符会返回一个整数

转载 作者:行者123 更新时间:2023-12-01 07:52:35 25 4
gpt4 key购买 nike

“0123”.charAt(0) – '0' 返回一个整数。这个整数是什么(以及为什么是这个整数)以及一般来说为什么 char-char = int?

最佳答案

why is it this integer

因为编译器无法保证操作结果会产生有效的字符值。由于字符、字节和整数都是隐式可互换的...并且由于整数是三者中唯一的一个,它包含所有三个可能值的超集...默认转换为整数。

@wero 在对上述问题的评论中说明了这一点:

what character is '0' - '1'?

也就是说,如果您从较低的字符中减去较高的字符,那么您将得到一个负字符。这是无效的。然而,负整数是有效的。

或者考虑一个字节...如果将字节 250 添加到 250 会怎样?两者都是有效字节,但结果值不是有效字节。 (因为它有两个字节宽。)因此需要一个整数来包含它。

对于编译器可以保证生成值的常量表达式,可能存在(现在或将来)足够智能的编译器来维护它。 (他们甚至可能将其优化为编译时常量来代替代码中的表达式。)例如:

`1` - `0`

但是,如果即使这样的编译器在使用 .charAt() 之类的东西时默认返回整数,我也不会感到惊讶,因为它不再是常量表达式。作为人类,我们可以直观地推断出该表达式的恒定结果。但编译器需要严格而简单的规则,引入方法调用会使这些规则变得相当复杂。

关于java - 为什么Java中一个字符减去另一个字符会返回一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34887450/

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