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

Java中字符'i'与变量i相加为何输出数字序列?

为什么'i' + i输出数字序列而非预期的字符拼接?

这是Java中类型自动提升和print方法重载机制共同作用的结果,拆解来看:

  1. char类型的本质
    单引号包裹的'i'是char类型,它在Java里本质是UTF-16编码的无符号16位整数,对应的ASCII值是105(UTF-16兼容ASCII)。

  2. 加法操作的类型提升
    当你执行'i' + i时,char类型的'i'会被自动转换成int类型,然后和int变量i做整数加法。循环中i从0到6,每次计算结果就是:

    • 105 + 0 = 105
    • 105 + 1 = 106
    • ...
    • 105 + 6 = 111
      这些整数会被System.out.print()直接输出,所以连起来就是你看到的105106107108109110111。
  3. 单独打印'i'的区别
    System.out.print()有专门处理char类型的重载方法,当你直接传'i'时,方法会直接输出该字符对应的Unicode字符,也就是字母"i",循环7次就会输出7个"i"。

如果想要实现字符和数字的拼接输出(比如i0i1i2...i6),可以这样改:

  • 先把char转成字符串触发字符串拼接:System.out.print("" + 'i' + i);
  • 或者分开调用print:System.out.print('i'); System.out.print(i);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:55:25