Java 执行串联而不是加法的加法运算符(+;)

Java 执行串联而不是加法的加法运算符(+;),java,string-concatenation,operator-precedence,Java,String Concatenation,Operator Precedence,我是Java新手。当我处理下面的循环时,我想显示循环的计数器值递增1。当我保留下面的代码时,我得到的值与计数器值的1类似。为什么System.out.println使用串联而不是加法 for (c = 0; c < Size; c++) { System.out.println("here the problem " + c+1 + " Case"); } (c=0;c

我是Java新手。当我处理下面的循环时,我想显示循环的计数器值递增1。当我保留下面的代码时,我得到的值与计数器值的1类似。为什么
System.out.println
使用串联而不是加法

for (c = 0; c < Size; c++) {
  System.out.println("here the problem " + c+1 + " Case");
}
(c=0;c{ System.out.println(“这里是问题”+c+1+“案例”); } 试试这个

for (c = 0; c < Size; c++) {
  System.out.println("here the problem " + (c+1) + " Case");
 }
(c=0;c{ System.out.println(“这里是问题”+(c+1)+“案例”); } 因为这总是在字符串连接之前尝试计算括号中的表达式

for (c = 0; c < Size; c++) {
  System.out.println("here the problem " + (c+1) + " Case");
 }
(c=0;c{ System.out.println(“这里是问题”+(c+1)+“案例”); }
由于这总是在字符串连接之前尝试对括号中的表达式求值

,因此与System.out.println的工作方式无关。 Java将语句视为连接。
因为当您将+与字符串一起使用时,其他变量将被视为字符串,java将执行串联

,这与System.out.println的工作方式无关。 Java将语句视为连接。
因为当您将+与字符串一起使用时,其他变量将被视为字符串,java将执行串联

+
运算符对串联和加法都重载,并且这两个运算符具有相同的优先级,因此操作从左到右进行计算

从左侧开始,遇到的第一个操作数是字符串
“这里是问题”
,因此运算符知道它应该执行串联。它继续将
c
连接到该字符串,生成一个新字符串

因此,第二个
+
对结果字符串进行操作,并且
1
,因此它再次进行连接

如果您想具体控制操作顺序,并在
“问题出在这里”+c
之前对
c+1
进行评估,则需要将操作括在括号中:

"here the problem " + (c + 1) + " Case"

+
运算符对于串联和加法都重载,并且两个运算符具有相同的优先级,因此从左到右计算操作

从左侧开始,遇到的第一个操作数是字符串
“这里是问题”
,因此运算符知道它应该执行串联。它继续将
c
连接到该字符串,生成一个新字符串

因此,第二个
+
对结果字符串进行操作,并且
1
,因此它再次进行连接

如果您想具体控制操作顺序,并在
“问题出在这里”+c
之前对
c+1
进行评估,则需要将操作括在括号中:

"here the problem " + (c + 1) + " Case"

(c+1)
,不要忘记妄想,否则在第一次操作之后,
“这里…”+c…
其他所有内容都将作为
字符串处理。您编写的表达式相当于
(((“这里的问题”+c)+1)+“案例”)
。这被称为左关联。
(c+1)
,不要忘记妄想,否则在第一次操作之后,
“这里…”+c…
其他所有内容都将作为
字符串处理。您编写的表达式相当于
((((“这里的问题”+c)+1)+“Case”)
。这称为左结合性。