为什么我要在这个简单的java代码中得到这个输出?
为什么要将为什么我要在这个简单的java代码中得到这个输出?,java,Java,为什么要将10作为输出?我不明白为什么它不将其输出为1050 public class Testing1 { public static void main(String args[]) { int num1 = 10, num2 = 20, num3 = 30; System.out.println(num1 + " " + num2 + num3); 这是因为Java使用“优先级”计算表达式。在本例中,它从左侧开始,向右运行,因为所有操作都是+,它们都具有相同的优先级
10
作为输出?我不明白为什么它不将其输出为1050
public class Testing1 {
public static void main(String args[]) {
int num1 = 10, num2 = 20, num3 = 30;
System.out.println(num1 + " " + num2 + num3);
这是因为Java使用“优先级”计算表达式。在本例中,它从左侧开始,向右运行,因为所有操作都是
+
,它们都具有相同的优先级,因此使用从左到右的顺序。在第一个“加法”中,添加一个数字和一个字符串。Java假定“+”用于进行字符串连接,然后得到结果“10”
。然后将其添加到20,并获得(字符串串联)结果“10 20”。最后,添加30,再次添加到字符串中,得到结果
“10 2030”`
注意,如果您将操作顺序更改为:
System.out.println(num1+num2+" "+num3);
num1+num2
将被视为数字,并进行数字加法,给出最终结果:“30”
要获得正确的值,可以通过使用括号(…)
(其运算符优先级高于“+”)生成子表达式来更改求值顺序,并通过以下方式获得结果:
System.out.println(num1 + " " + (num2 + num3));
num2+num3
首先作为数值表达式计算,然后才作为字符串表达式的一部分合并。这是因为Java以“优先级”计算表达式。在这种情况下,它从左侧开始,从右侧开始,因为所有操作都是+
,它们都具有相同的前缀因此使用从左到右的顺序。在第一个“加法”中,添加一个数字和一个字符串。Java假定“+”用于进行字符串连接,然后得到结果“10”
。然后将其添加到20,然后得到(字符串连接)结果“10 20”。最后添加30,再次添加到字符串,得到结果
“10 2030”`
注意,如果您将操作顺序更改为:
System.out.println(num1+num2+" "+num3);
num1+num2
将被视为数字,并进行数字加法,给出最终结果:“30”
要获得正确的值,可以通过使用括号(…)
(其运算符优先级高于“+”)生成子表达式来更改求值顺序,并通过以下方式获得结果:
System.out.println(num1 + " " + (num2 + num3));
首先将
num2+num3
作为数值表达式进行计算,然后将其合并为字符串表达式的一部分。查找运算符优先级和不同类型操作数时+的工作方式查找运算符优先级,以及在java“+”运算符中不同类型操作数时+的工作方式不同对不同的操作数使用不同的方法
(integer + String) + int + int
(String + int)+ int
String + int
可以通过使用括号强制执行
(num2+num3)
的优先级来实现所需的输出。在java中,“+”运算符对不同的操作数进行不同的操作
(integer + String) + int + int
(String + int)+ int
String + int
通过使用括号强制执行(num2+num3)
的优先级,可以实现所需的输出