java - 在 int + String 操作上使用“+”运算符时,Java 是否将 int 隐式转换为 String?
问题描述
我有以下代码:
System.out.println("12" + 34); // prints "1234"
System.out.println(1 + 2 + "34"); // prints "334"
我期待一个错误,相反,我的 int 值没有错误地连接到字符串。
有人可以详细解释上面发生了什么吗?
当 Java 在“+”操作中注意到一个 int AND String 数据类型时,它是否会隐式地将 int 转换为 String 类型?
为什么使用 + 运算符时不会因为错误的数据类型而引发错误?
如果确实存在隐式转换,为什么 Java 会这样做而不抛出错误?
解决方案
这个答案解决了你的第二个例子:
System.out.println(1 + 2 + "34"); // prints "334"
由于运算符的从左到右的优先级,这里发生的是表达式首先1 + 2
发生。实际上,任何运算符都具有从左到右的优先级,所有其他事物都具有相同的优先级。因此,首先计算为 的整数加法,给我们留下:+
1 + 2
3
System.out.println(3 + "34"); // prints "334"
接下来,3 + "34"
评估为字符串连接,类似于您的第一个示例打印"334"
。