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

Java中char数组元素直接相加为何输出数字而非对应字符?

Java char类型加法运算结果差异原因

核心原理

Java 中的char本质是16位无符号整数类型,存储的是字符对应的Unicode编码值,参与运算时会遵循Java的基础类型提升规则与+运算符重载逻辑。

第一个打印语句输出数值217的原因

两个char类型直接执行+运算时,会触发基础类型自动提升:两个char会先转换为int类型,再执行数值加法,最终结果为整数类型。
对应你的代码逻辑:

  • np[1]是字符s,对应的ASCII/Unicode编码值为115
  • np[np.length-1]是字符f,对应的ASCII/Unicode编码值为102
  • 运算等价于115 + 102,最终输出结果为217
    代码示例:
char[] np={'a','s','d','f'};
// 底层执行的是int类型加法
System.out.println(np[1]+np[np.length-1]); // 输出217

第二个打印语句输出字符串的原因

+运算符存在重载规则:只要任意一个操作数是字符串类型,+就会执行字符串拼接逻辑,同时将其他操作数自动转为字符串类型。
你的代码开头加了空字符串"",运算从左到右执行:

  1. 先执行"" + np[1],得到对应字符的字符串形式
  2. 再执行该字符串和np[np.length-1]的拼接,得到最终的字符拼接结果
// 字符串拼接逻辑,而非数值加法
System.out.println(""+np[1]+np[np.length-1]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:45:01