Java 执行串联而不是加法的加法运算符(+;)
我是Java新手。当我处理下面的循环时,我想显示循环的计数器值递增1。当我保留下面的代码时,我得到的值与计数器值的1类似。为什么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
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”)
。这称为左结合性。