Java 为什么会有两种不同的结果?

Java 为什么会有两种不同的结果?,java,Java,为什么bc+2+3有两种不同的答案?2+3+bc我只改变了bc,3和2的顺序,但是系统对加法给出了完全不同的答案 提前感谢+既可用作算术运算,也可用作串联运算符。所有表达式都是从左到右执行的。因此,在2+3+bc的情况下,它首先添加2和3作为算术运算符,然后当它在一边找到字符串,在另一边找到数字时,它作为串联运算符。当使用+将任何东西添加到字符串时,Java将其视为要将该东西连接到字符串 让我们看看每个案例 "bc" + 2 + 3 +是左关联的,这意味着首先计算最左边的两个操作数。在这种情况

为什么bc+2+3有两种不同的答案?2+3+bc我只改变了bc,3和2的顺序,但是系统对加法给出了完全不同的答案


提前感谢

+既可用作算术运算,也可用作串联运算符。所有表达式都是从左到右执行的。因此,在2+3+bc的情况下,它首先添加2和3作为算术运算符,然后当它在一边找到字符串,在另一边找到数字时,它作为串联运算符。

当使用+将任何东西添加到字符串时,Java将其视为要将该东西连接到字符串

让我们看看每个案例

"bc" + 2 + 3
+是左关联的,这意味着首先计算最左边的两个操作数。在这种情况下,它是bc+2。这计算为bc2。然后我们评估bc2+3,产生bc23


首先计算最左边的两个操作数:2+3计算为5。这是因为表达式中没有字符串。+执行数学加法。然后我们评估5+bc,产生5bc。

Java从左到右读取您的操作。如果第一个变量是字符串,其余的值将连接到它。在第二种情况下,必须首先计算数字,然后将这些数字相加,然后将该值与下面的字符串连接起来。这将产生结果:第一种情况:bc23和第二种情况23bc。

在您的情况下,如果在第一种情况下放置字符串值,Java会将所有值视为字符串,除非前两个值是可计算的。 下面是帮助您理解基本概念的示例代码

  public static void main(String[] args) {
    // TODO code application logic here
     System.out.println("bc"+2+3); //bc23
     System.out.println("bc"+(2+3)); //bc5
      System.out.println(2+3+"bc");  //5bc
      System.out.println(2+3+"bc"+2+3); //5bc23
      System.out.println("bc"+2+3==2+3+"bc");// false  

    }

由于评估顺序,请提供工作代码示例和示例输出。请编辑您的问题并复制/粘贴代码和输出,而不是屏幕截图。索引将变得更加容易。
  public static void main(String[] args) {
    // TODO code application logic here
     System.out.println("bc"+2+3); //bc23
     System.out.println("bc"+(2+3)); //bc5
      System.out.println(2+3+"bc");  //5bc
      System.out.println(2+3+"bc"+2+3); //5bc23
      System.out.println("bc"+2+3==2+3+"bc");// false  

    }