[英]Why does a concatenation of integers and strings behave like this?
这段代码:
public void main(String[] args)
{
String s1 = 50+40+"Hello"+50+50;
System.out.println(s1);
}
输出为: 90Hello5050
为什么?
这只是优先级和关联性的问题。 您的代码等效于:
String s1 = (((50 + 40) + "Hello") + 50) + 50;
所以那是:
String s1 = ((90 + "Hello") + 50) + 50;
这是:
String s1 = ("90Hello" + 50) + 50;
这是:
String s1 = "90Hello50" + 50;
这是:
String s1 = "90Hello5050";
如果您想要90Hello100
,则应使用方括号将其明确显示。 我将其写为:
String s1 = (50 + 40) + "Hello" + (50 + 50);
根据Java语言规范的第15.7节“评估顺序” ,Java中的运算符从左到右进行评估。
这意味着您的串联被评估为与
String s1 = (((50+40)+"Hello")+50)+50;
这就是为什么
通常,当您具有可以应用于String
的二进制运算(在这种情况下为“ +”)并且计算涉及String
,另一个操作数也将转换为String
。
因为Java将从左到右连接您的字符串。 它将彼此相加50和40,因为它们是int
,然后将其连接到“ hello”字符串,结果是str
因为int
和str
将是str
输出。 然后“ 90hello”为str
,它将与50的int
接触,如我所说,结果将为str
并继续。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.