You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么已转换为int类型的变量输出时会被当作String类型处理?

问题根因

你的int类型变量g本身没有被当作String处理,问题出在System.out.println中表达式的运算顺序和Java+运算符的重载规则:

  • Java中+是左结合运算符,运算顺序从左到右执行
  • 当+两侧任意一个操作数为String类型时,Java会自动将另一个操作数转为String类型,执行字符串拼接逻辑而非算术加法

你代码中表达式g +"\n" +g+1的运算拆解:

  1. 第一步运算g + "\n":int类型的43和String类型的\n拼接,得到String结果"43\n"
  2. 第二步运算"43\n" + g:String和int类型的43拼接,得到String结果"43\n43"
  3. 第三步运算"43\n43" + 1:String和int类型的1拼接,得到最终输出的字符串"43\n431",和你看到的输出一致

修复方案

如果你要让后两个g和1优先执行算术加法,只需要给算术运算部分加括号提升优先级即可,修改打印语句:

System.out.println(g + "\n" + (g + 1));

修改后输出为:

43
44

你也可以单独执行System.out.println(g + 1);验证,会直接输出44,说明g本身确实是int类型,不存在类型被篡改的问题。

内容的提问来源于stack exchange,提问作者AltercatingCurrent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:15:01