Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 爪哇-为什么赢了';t字符'+';出现在控制台上?_Java_Char_Println - Fatal编程技术网

Java 爪哇-为什么赢了';t字符'+';出现在控制台上?

Java 爪哇-为什么赢了';t字符'+';出现在控制台上?,java,char,println,Java,Char,Println,我正在做一个简单的计算器,这是我的代码 public static void main(String[] args) { int x = 3; int y = 7; char w = '+'; System.out.println(x+w+y+"="+(x+y)); } 结果显示为“53=10”,我不明白为什么“+”不会出现,以及53来自哪里。当我在最后一行使用(w)而不是w时,会出现正确的结果“3+7=10”。此行为是由于表达式

我正在做一个简单的计算器,这是我的代码

public static void main(String[] args) {
    int x = 3;
    int y = 7;
    char w = '+';
    
    System.out.println(x+w+y+"="+(x+y));
}

结果显示为“53=10”,我不明白为什么“+”不会出现,以及53来自哪里。当我在最后一行使用(w)而不是w时,会出现正确的结果“3+7=10”。

此行为是由于表达式

x + w + y

实际上被评估为
3+43+7
,为什么,您可能想知道?因为
+
是一个字符,实际上是一个数字,43不是整数。

字符在Java中可以隐式转换为整数<代码>x+w+y
添加它们的值。字符
'+'
的整数值恰好是43,因此得到3+43+7(=53)

w
放在括号中不会改变这一点,与您所说的相反

要解决此问题,请将
w
设置为
字符串

String w = "+";

相关:第一个关键点是
+
是左关联的,因此
x+w+y+“=”+(x+y)
相当于
(((x+w)+y)+“=”+(x+y))
;第二个关键点是,如果任一操作数是
字符串,则
+
为字符串串联,否则为数字加法<因此,code>x+w
使用数字加法进行计算(字符
char
不是字符串
String
),因此它是
3+43=46
。然后使用数字加法计算
46+y
,得出
53
。然后,
53+“=”
是第一个使用字符串连接来计算的子表达式,因为
“=”
是一个字符串。哇,谢谢你这样的评论!真的帮了我很多。非常感谢你!从来都不知道char可以是一个数字!