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

为什么java在System out语句中遇到字符串后,就开始将所有内容都视为字符串?,java,jakarta-ee,Java,Jakarta Ee,我正在学习java并每天练习它,我编写了以下代码并对输出感到好奇 class test { public static void main(String args[]) { System.out.println(1+2+ " = " +10+2); } } 这里的输出是3=102,它想知道下面的“Java一旦在System out语句中遇到字符串,就开始将所有内容都当作字符串处理” 有人能解释一下吗?我很困惑为什么它会接受字符串?+with string会变成字符串连接运算符,而不是加法运算符

我正在学习java并每天练习它,我编写了以下代码并对输出感到好奇

class test
{
public static void main(String args[])
{
System.out.println(1+2+ " = " +10+2);
}
}
这里的输出是3=102,它想知道下面的“Java一旦在System out语句中遇到字符串,就开始将所有内容都当作字符串处理”


有人能解释一下吗?我很困惑为什么它会接受字符串?

+
with string会变成字符串连接运算符,而不是加法运算符

1+2+10+2
作为简单加法等于15 而
1+2+“+”+10+2
将被视为
1. <代码>1+2输出将是3,因为它是一个简单的加法
2.
3+=(字符串)
输出将是
3=
,因为它是字符串串联

3.
3=(字符串)+10+2将是字符串连接,而不是简单的加法,因此输出将是
3=102
Java解析程序文本,而不考虑表达式的类型。作为动机,考虑它们是否是类中的方法之后编写的字段。因此,由于字符串串联和加法共享同一个运算符,因此

1+2+ " = " +10+2
相当于

((((1+2)+ " = ") +10)+2)
折叠常数,我们有

(((3+ " = ") +10)+2)
(("3 = " +10)+2)
("3 = 10"+2)
"3 = 102"
“Java一旦遇到错误,就开始将所有内容都当作字符串处理 “System.out语句中的字符串”

这是完全错误的
System.out
是类
PrintStream
的静态实例。 PrintStream有许多重载版本的
println()
方法,示例中的方法接受
String
作为参数。您使用的是+运算符,它用于字符串的串联,除非操作数都是数字

System.out.println(3+5+"."); // println(String) is invoked.
System.out.println(3+5); // println(int) is invoked.

你期望的产量是多少?此外,您的输出应该是
3=102
而不是
3=102
,对于
3=12
,您应该编写
System.out.println(1+2+“=”+(10+2))@jlordo 10+2=12;我期望3=12,我很困惑我已经关闭了“为什么它现在被视为string@mahalakshmi它是用语法指定的,从中可以导出运算符优先级和结合性。
System.out.println(3+5+"."); // println(String) is invoked.
System.out.println(3+5); // println(int) is invoked.