java - 加法运算符 (+) 执行串联而不是加法

标签 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 连接到该字符串,产生一个新的字符串。

因此,第二个 + 对生成的字符串和 1 进行操作,因此它再次进行连接。

如果您想专门控制操作的顺序,并在 "here the Problem"+ c 之前计算 c + 1,那么您需要将操作括起来括号中:

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

关于java - 加法运算符 (+) 执行串联而不是加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40013000/

相关文章:

python - Python中的字符串连接与字符串替换

c - 为什么这些构造使用增量前和增量后未定义的行为?

lambda - 跟踪 lambda 表达式求值

java - 将 JSON 值插入字符串

java - Android Studio 在其他项目中重用模块库

r - 通过字符串解析合并数据框行

java - 为什么 i += i + a[i++] + a[i++] + a[i++] 结果是 8?

java - 如何迭代两个列表并比较其中的项目?

java - 在哪个更好的示例中可以表示 Java 中的 switch 语句?

c# - 仅当预检查为空字符串时连接 C# 字符串