+运算符重载的细节:有无子字符串参与

62 阅读2分钟
System.out.println(“is ”+ 100 + 5);
System.out.println(100 + 5 +“ is”);
System.out.println(“is ”+ (100 + 5));

这三行代码展示了 Java 中的字符串拼接与运算符的结合。具体来说,+ 运算符既用于字符串拼接,也用于数值相加(加法运算)。但是,它们的优先级和执行顺序有所不同,因此输出的结果也不同。我们一起来分析一下每一行代码:

1. System.out.println(“is ”+ 100 + 5);

分析:

  • 这行代码首先将 "is "100 进行字符串拼接。由于 "is " 是一个字符串,+ 运算符会将 100 转换为字符串并拼接在后面。
  • 然后,得到的字符串 "is 100" 会与 5 继续进行字符串拼接,5 也会被转换为字符串。
  • 所以,最终的输出结果是:
    is 1005

2. System.out.println(100 + 5 + “ is”);

分析:

  • 在这行代码中,100 + 5 会首先执行,因为加法运算符 + 对于数字具有更高的优先级。
  • 100 + 5 计算得到 105
  • 然后,105" is" 进行字符串拼接,105 被转换为字符串并连接在 " is" 前面。
  • 所以,最终的输出结果是:
    105 is

3. System.out.println(“is ”+ (100 + 5));

分析:

  • 在这行代码中,括号 () 强制先计算 100 + 5,这会得到 105
  • 然后,"is "105 进行字符串拼接。由于 "is " 是字符串,105 会被转换为字符串并拼接在 "is " 后面。
  • 所以,最终的输出结果是:
    is 105

总结:

  • 第一行 (“is ”+ 100 + 5)"is "100 先拼接成字符串 "is 100",然后再拼接 5,结果是 is 1005
  • 第二行 (100 + 5 + “ is”)100 + 5 先计算得到 105,然后与 " is" 拼接,结果是 105 is
  • 第三行 (“is ”+ (100 + 5)))(100 + 5) 先计算得到 105,然后与 "is " 拼接,结果是 is 105

通过这个分析,可以看到 Java 中字符串拼接和加法运算的优先级问题,尤其是在字符串和数字的混合运算中,括号的使用可以改变运算顺序,从而影响最终的输出结果。 [Something went wrong, please try again later.]