Java 使用不同运算符的字符串操作

Java 使用不同运算符的字符串操作,java,concatenation,string-formatting,string-concatenation,type-promotion,Java,Concatenation,String Formatting,String Concatenation,Type Promotion,我用了这句话 System.out.println("Y"+90+90); Java给出的答案是Y9090。我理解Java是如何做这个操作的。如果使用运算符+,则字符串将与文本连接。因此,首先将Y与90串联,形成Y90作为新字符串,然后再次将Y90与90串联,形成Y9090作为结果字符串 当我将上述表达式更改为: System.out.println("Y"+90-90); Java显示了一个错误。在本例中,Y与90连接,形成一个新字符串Y90。这个新字符串面向-运算符并产生错误 但如果我

我用了这句话

System.out.println("Y"+90+90);
Java给出的答案是
Y9090
。我理解Java是如何做这个操作的。如果使用运算符
+
,则字符串将与文本连接。因此,首先将
Y
与90串联,形成
Y90
作为新字符串,然后再次将
Y90
90
串联,形成
Y9090
作为结果字符串

当我将上述表达式更改为:

System.out.println("Y"+90-90); 
Java显示了一个错误。在本例中,
Y
90
连接,形成一个新字符串
Y90
。这个新字符串面向
-
运算符并产生错误

但如果我写这封信:

System.out.println("Y"+90*90);
它将答案显示为
Y8100


怎么可能呢?它应该产生一个错误,或者Java应该为第二个语句(如
Y0
)产生一个类似的答案,而不产生错误。

使用这两个加号,操作符从左到右求值,因此
“Y”+90+90
等于
(“Y”+90)+90

对于优先级相同的加号和减号,情况也是如此<代码>“Y”+90-90等于
(“Y”+90)-90
)。不能从字符串中减去数字,因此会出现编译错误

加上一个加号和一个乘法器,乘法具有更高的优先级,因此
“Y”+90*90
“Y”+(90*90)
,编译起来很好


如果有疑问,请添加括号以表明您的意图。

谢谢……我没有想到这一点。我以为这会是一些规则。@JayeshSonkusare你是什么意思?有一些规则——定义非常明确的规则。