为什么java在System out语句中遇到字符串后才开始将所有内容视为String?

irr*_*ror 2 java java-ee

我正在学习java并且每天练习它,我写了下面的代码,并想知道输出

class test
{
public static void main(String args[])
{
System.out.println(1+2+ " = " +10+2);
}
}
Run Code Online (Sandbox Code Playgroud)

这里的输出是3 = 102,并且想知道以下"Java一旦在System out语句中遇到字符串就开始将所有内容视为字符串"

任何人都可以解释这个吗?我很困惑为什么它接受它作为字符串?

Tom*_*ine 6

Java解析程序文本而不考虑表达式的类型.作为动机,考虑它们是否是在课堂上的方法之后编写的字段.因此,由于字符串连接和添加共享相同的运算符,我们有

1+2+ " = " +10+2
Run Code Online (Sandbox Code Playgroud)

相当于

((((1+2)+ " = ") +10)+2)
Run Code Online (Sandbox Code Playgroud)

折叠常数,我们有

(((3+ " = ") +10)+2)
(("3 = " +10)+2)
("3 = 10"+2)
"3 = 102"
Run Code Online (Sandbox Code Playgroud)