You need to enable JavaScript to run this app. Java中char类型变量执行ch++后从'9'变为':'的原因是什么?
优惠活动
大模型
产品
解决方案
定价
更多

Java中char类型变量执行ch++后从'9'变为':'的原因是什么?

核心原因解释
  • Java 的 char 类型本质是占2字节的无符号整数,存储的是字符对应的Unicode码点数值,不绑定“数字、字母、符号”这类字符分类语义。
  • ch++ 操作的逻辑非常直接:对char存储的整数值做+1运算,运算完成后直接读取新数值对应的Unicode字符输出,不会自动识别字符类别去匹配“同序列下一个字符”的预期。

按照Unicode与ASCII兼容的基础码表规则,相邻码点的字符排列是固定的:

  • 大写英文字母的码点范围从U+0041('A',对应十进制65)到U+005A('Z'),码点完全连续,因此'A'自增1后刚好匹配'B',和预期一致。
  • 十进制数字字符的码点范围从U+0030('0',对应十进制48)到U+0039('9',对应十进制57),码点同样连续,因此'0'自增1到'1'也符合直觉。
  • 紧跟在'9'(码点0x39)之后的连续码点是U+003A,该码点对应的字符就是西文冒号:,因此执行完ch++后输出冒号是完全符合语言规则的正常结果。

如果继续对这个变量做自增操作,后续会依次输出分号;、小于号<、等于号=、大于号>等标点符号,直到码点走到U+0041时才会重新出现大写字母'A'。


内容的提问来源于stack exchange,提问作者Milith De silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 16:27:04