gpt4 book ai didi

java - 为什么我可以在没有显式强制转换的情况下将 int 分配给 char 变量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:49 24 4
gpt4 key购买 nike

我想知道为什么这段代码有效。

char ch1;
ch1 = 'a' + 1;
System.out.println(ch1);

在第 2 行中,不是将右侧提升为 int 然后将 int 分配给 char,不会我们需要一个明确的转换?

同样,我理解当您执行 ch1 = 65 时会发生什么。但是由于 Java 不允许自动向下类型转换,我们不需要从 int 显式转换为 char 吗?

最佳答案

因为 Java Language Specification说:

In addition, if the expression is a constant expression (§15.28) of type byte, short, char or int :

A narrowing primitive conversion may be used if the type of the variable is byte, short, or char, and the value of the constant expression is representable in the type of the variable.

所以你是对的,表达式被提升为 int,但是因为它是一个常量表达式,所以不需要强制转换。如果它涉及一个变量(或者它的值不适合 char),它就会不同。

对于此类问题,最好立即查看语言规范,因为它是权威来源并且对于规范而言非常可读。

关于java - 为什么我可以在没有显式强制转换的情况下将 int 分配给 char 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7296458/

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