Java中char数组元素直接相加为何输出数字而非对应字符?
Java char类型加法运算结果差异原因
核心原理
Java 中的char本质是16位无符号整数类型,存储的是字符对应的Unicode编码值,参与运算时会遵循Java的基础类型提升规则与+运算符重载逻辑。
第一个打印语句输出数值217的原因
两个char类型直接执行+运算时,会触发基础类型自动提升:两个char会先转换为int类型,再执行数值加法,最终结果为整数类型。
对应你的代码逻辑:
np[1]是字符s,对应的ASCII/Unicode编码值为115np[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
第二个打印语句输出字符串的原因
+运算符存在重载规则:只要任意一个操作数是字符串类型,+就会执行字符串拼接逻辑,同时将其他操作数自动转为字符串类型。
你的代码开头加了空字符串"",运算从左到右执行:
- 先执行
"" + np[1],得到对应字符的字符串形式 - 再执行该字符串和
np[np.length-1]的拼接,得到最终的字符拼接结果
// 字符串拼接逻辑,而非数值加法 System.out.println(""+np[1]+np[np.length-1]);
内容的提问来源于stack exchange,提问作者Sumanth
相关产品推荐
相关产品推荐

