Java中字符'i'与变量i相加为何输出数字序列?
为什么
'i' + i输出数字序列而非预期的字符拼接? 这是Java中类型自动提升和print方法重载机制共同作用的结果,拆解来看:
char类型的本质
单引号包裹的'i'是char类型,它在Java里本质是UTF-16编码的无符号16位整数,对应的ASCII值是105(UTF-16兼容ASCII)。加法操作的类型提升
当你执行'i' + i时,char类型的'i'会被自动转换成int类型,然后和int变量i做整数加法。循环中i从0到6,每次计算结果就是:- 105 + 0 = 105
- 105 + 1 = 106
- ...
- 105 + 6 = 111
这些整数会被System.out.print()直接输出,所以连起来就是你看到的105106107108109110111。
单独打印
'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
相关产品推荐
相关产品推荐

