在 Java 中将 Integer 文字分配给 char 数据类型 [duplicate]

Assigning an Integer literal to a char data type in Java [duplicate]

提问人:Anshul V. Kumar 提问时间:11/4/2023 更新时间:11/4/2023 访问量:53

问:

在学习 Java 时,我看到了这样一句话——

“如果不显式强制转换,则无法直接将整数分配给 char 数据类型”

我尝试了以下示例:

char ch = 65;
System.out.println(ch);

输出:A

我没有执行任何类型转换,并且能够将 Integer 分配给 char 数据类型。这与上述说法相矛盾。

int i = 65;
char ch = i;
System.out.println(ch);

输出:Error

这正确地给了我一个错误,并要求我对其进行类型转换。

为什么我能够在第一种情况下将整数分配给 char,而在第二种情况下却不能?

Java 强制 类型转换 字符

评论

2赞 Turing85 11/4/2023
变量和文本之间是有区别的。如果我们玩弄上述方法,我们会发现它有效,但失败了。这也解释了为什么不起作用:可能有一个价值。现在人们可以尝试.这也将失败,因为(以及任何其他数值基元变量)可能是负数。char c = 65_535;char c = 65_536;int i = 65; char c = ii> 65_535short s = 1; char c = s;s
1赞 Old Dog Programmer 11/4/2023
如果你能用 instead 代替来解释相同的例子,就会给出相同的*结果,你就有了答案。(* 除了示例将输出而不是shortcharshort65A)
2赞 Old Dog Programmer 11/4/2023
看起来是这个的重复项:可以将整数值分配给 char,但不能将整数变量分配给 char
0赞 user207421 11/4/2023
这不是赋值:这是初始化。

答:

0赞 Reilas 11/4/2023 #1

"...为什么我能够在第一种情况下将整数分配给字符,而在第二种情况下却不能?

第一个示例使用文字 65,其处理方式似乎与变量 i 略有不同。
这只是解释器的一个功能。

这方面的文档将在 Java 语言规范中。

评论

0赞 user207421 11/4/2023
它不是解释器的功能。这是一个初始化分配的问题。