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

Java用数组与方法输出字母表时打印出[C@3d012ddd的原因

问题成因

你看到的[C@3d012ddd不是程序报错抛出的异常内容,是char数组对象调用默认toString()方法返回的字符串:

  • 前缀[C是类型标识:[代表当前对象是数组类型,C对应数组元素是char基本类型
  • @后的十六进制字符串是该数组对象的哈希值

出现这个输出的核心原因是:你在代码里写了"The letters of the alphabet are: " + A的字符串拼接逻辑,当char数组和String类型做+运算时,Java会自动调用数组对象的toString()方法把数组转成字符串再拼接。而所有Java数组的toString()方法都直接继承自顶级父类Object的默认实现,不会遍历输出数组里存储的实际元素,只会返回上述的「类型+@+哈希值」格式字符串。
补充说明:如果单独调用System.out.println(A)不做字符串拼接,PrintStream类有专门针对char数组的重载方法,会直接打印数组内的字符内容,但只要和其他字符串做拼接,就会触发默认toString逻辑返回哈希串。

修复方案

根据你想要的输出格式,二选一即可:

  1. 需要直接输出连续无分隔的字母表:用String的构造方法把char数组转为字符串即可
    // 把原输出行替换为以下代码
    System.out.println("The letters of the alphabet are: " + new String(A));
    
    运行后输出为:The letters of the alphabet are: abcdefghijklmnopqrstuvwxyz
  2. 需要带分隔符的数组格式输出:用JDK提供的数组工具类转换
    首先在类文件顶部加导入语句:
    import java.util.Arrays;
    
    再替换输出代码:
    System.out.println("The letters of the alphabet are: " + Arrays.toString(A));
    
    运行后输出为:The letters of the alphabet are: [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:48:19