加法运算符 (+) 执行串联而不是加法
Additive Operator (+) Performing Concatenation Instead of Addition
我是 Java 的新手。当我通过下面的循环进行处理时,我想显示循环的计数器值递增 1。当我保留下面的代码时,我得到的值就像将 1 与计数器值连接起来一样。为什么 System.out.println
使用串联而不是加法?
for (c = 0; c < Size; c++) {
System.out.println("here the problem " + c+1 + " Case");
}
试试这个
for (c = 0; c < Size; c++) {
System.out.println("here the problem " + (c+1) + " Case");
}
因为这总是尝试在字符串连接之前评估括号中的表达式
这与 System.out.println 的工作方式无关。
Java 将您的语句视为串联。
因为当您将 + 与字符串一起使用时,其他变量将被视为字符串并且 java 将执行连接
+
运算符对于连接和加法都重载了,并且两个运算符具有相同的优先级,因此运算从左到右计算。
从左边开始,遇到的第一个操作数是字符串"here the problem"
,所以运算符知道它应该执行连接。它继续将 c
连接到该字符串,产生一个新的字符串。
因此,第二个 +
正在对结果字符串进行操作,1
,因此它再次进行连接。
如果您想专门控制操作的顺序,并在 "here the problem" + c
之前计算 c + 1
,那么您需要将操作括在括号中:
"here the problem " + (c + 1) + " Case"
我是 Java 的新手。当我通过下面的循环进行处理时,我想显示循环的计数器值递增 1。当我保留下面的代码时,我得到的值就像将 1 与计数器值连接起来一样。为什么 System.out.println
使用串联而不是加法?
for (c = 0; c < Size; c++) {
System.out.println("here the problem " + c+1 + " Case");
}
试试这个
for (c = 0; c < Size; c++) {
System.out.println("here the problem " + (c+1) + " Case");
}
因为这总是尝试在字符串连接之前评估括号中的表达式
这与 System.out.println 的工作方式无关。 Java 将您的语句视为串联。 因为当您将 + 与字符串一起使用时,其他变量将被视为字符串并且 java 将执行连接
+
运算符对于连接和加法都重载了,并且两个运算符具有相同的优先级,因此运算从左到右计算。
从左边开始,遇到的第一个操作数是字符串"here the problem"
,所以运算符知道它应该执行连接。它继续将 c
连接到该字符串,产生一个新的字符串。
因此,第二个 +
正在对结果字符串进行操作,1
,因此它再次进行连接。
如果您想专门控制操作的顺序,并在 "here the problem" + c
之前计算 c + 1
,那么您需要将操作括在括号中:
"here the problem " + (c + 1) + " Case"