gpt4 book ai didi

java - 转换类型 char,类似的赋值行为不同

转载 作者:行者123 更新时间:2023-11-29 03:22:58 25 4
gpt4 key购买 nike

你好,我有一段 Java 代码可以将一个字符移动 2,就像这样

char ch = 'A';
ch += 2;
System.out.println(ch);

这种情况下的输出是“C”(正如预期的那样)。但是如果我这样重写代码:

char ch = 'A';
ch = ch + 2;
System.out.println(ch);

我收到编译错误“类型不匹配:无法从 int 转换为 char”。为什么会这样,这两个评估不相等吗?

最佳答案

X += Y 等同于 X = X + Y 是一种常见的误解。来自 JLS §15.26.2 :

A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T) ((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.

请注意,这里涉及隐式转换。现在当你有类似的东西时:

ch = ch + 2;  // no cast, error

右边的类型是int,左边的类型是char,所以两者类型不匹配分配,因此错误。这可以通过显式转换来修复:

ch = (char) (ch + 2);  // cast, no error

关于java - 转换类型 char,类似的赋值行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22578492/

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