Java中+运算混合数值与字符串输出差异原因问询
两段Java代码输出差异原因及运算逻辑区别
核心差异来自Java中+运算符的两个基础特性:
+是左结合运算符,同级运算严格按照从左到右的顺序执行+同时承担两种运算逻辑:两边操作数均为数值类型时执行算术加法;任意一边操作数为字符串类型时,自动将另一个操作数转为字符串执行拼接操作
第一段代码执行逻辑
对应代码:
System.out.println(100 + 100 +"Simplilearn");
运算从左到右逐层执行:
- 最先计算最左侧的
100 + 100:两个操作数都是int数值类型,执行算术加法,得到中间结果200(int类型) - 再计算
200 + "Simplilearn":右侧操作数是字符串类型,触发字符串拼接规则,将int值200转为字符串"200"后和"Simplilearn"拼接,最终输出200Simplilearn。
第二段代码执行逻辑
对应代码:
System.out.println("E-Learning Company" + 100 + 100);
运算同样从左到右逐层执行:
- 最先计算最左侧的
"E-Learning Company" + 100:左侧操作数是字符串类型,直接触发字符串拼接规则,将int值100转为字符串"100"后拼接,得到中间结果E-Learning Company100(String类型) - 再计算上一步得到的字符串 + 100:左侧操作数已经是字符串类型,再次触发拼接规则,把第二个100也转为字符串"100"拼接上去,最终输出
E-Learning Company100100。
补充:如果需要在字符串拼接场景下先执行数值加法,可以通过小括号提升运算优先级,比如写为
"E-Learning Company" + (100 + 100),就会先算括号内的加法得到200,再执行拼接,输出E-Learning Company200。
内容的提问来源于stack exchange,提问作者Kalaimaran Madhavan
相关产品推荐
相关产品推荐

