首页 > 解决方案 > 在 int + String 操作上使用“+”运算符时,Java 是否将 int 隐式转换为 String?

问题描述

我有以下代码:

    System.out.println("12" + 34);    // prints "1234"

    System.out.println(1 + 2 + "34"); // prints "334"

我期待一个错误,相反,我的 int 值没有错误地连接到字符串。

有人可以详细解释上面发生了什么吗?

  1. 当 Java 在“+”操作中注意到一个 int AND St​​ring 数据类型时,它是否会隐式地将 int 转换为 String 类型?

  2. 为什么使用 + 运算符时不会因为错误的数据类型而引发错误?

  3. 如果确实存在隐式转换,为什么 Java 会这样做而不抛出错误?

标签: java

解决方案


这个答案解决了你的第二个例子:

 System.out.println(1 + 2 + "34"); // prints "334"

由于运算符的从左到右的优先级,这里发生的是表达式首先1 + 2发生。实际上,任何运算符都具有从左到右的优先级,所有其他事物都具有相同的优先级。因此,首先计算为 的整数加法,给我们留下:+1 + 23

 System.out.println(3 + "34"); // prints "334"

接下来,3 + "34"评估为字符串连接,类似于您的第一个示例打印"334"


推荐阅读