为什么我要在这个简单的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“+”运算符中不同类型操作数时+的工作方式不同对不同的操作数使用不同的方法

  • 对于整数操作数,它作为整数加法运算
  • 对于字符串,它作为串联操作
  • java表达式的求值是基于优先规则的。在您的例子中,只有“+”运算符,所以求值是从左到右的

    对于整数和字符串操作数,java“+”运算符执行字符串串联

    所以num1+“”+num2+num3执行如下

     (integer + String) + int + int
                (String + int)+ int
                      String  + int
    

    可以通过使用括号强制执行
    (num2+num3)
    的优先级来实现所需的输出。

    在java中,“+”运算符对不同的操作数进行不同的操作

  • 对于整数操作数,它作为整数加法运算
  • 对于字符串,它作为串联操作
  • java表达式的求值是基于优先规则的。在您的例子中,只有“+”运算符,所以求值是从左到右的

    对于整数和字符串操作数,java“+”运算符执行字符串串联

    所以num1+“”+num2+num3执行如下

     (integer + String) + int + int
                (String + int)+ int
                      String  + int
    
    通过使用括号强制执行
    (num2+num3)
    的优先级,可以实现所需的输出