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

数组问题:返回随机字符及打印出现[I@6d06d69c异常

解决数组打印异常与随机数生成问题

看起来你遇到了Java数组操作里的两个常见小坑,我来帮你逐一捋清楚:

一、为什么打印数组会得到[I@6d06d69c?

这个输出其实是Java中int数组默认的toString()方法返回的结果:

  • [I表示这是一个int类型的数组
  • @后面的一串字符是数组对象的哈希码值,完全不是你要的数组元素内容

之所以会这样,是因为数组继承自Object类,而Object的默认toString()就是返回「类型@哈希码」的格式,不会自动遍历打印元素。

两种快速解决方法:

  1. 用Arrays.toString()方法(记得导入java.util.Arrays包)
    这是最简便的方式,直接帮你格式化数组元素:

    import java.util.Arrays;
    import java.util.Random;
    
    public class RandomNumberGenerator {
        public static void main(String[] args) {
            Random random = new Random();
            int[] randomNums = new int[7];
            
            // 生成1-10的随机数存入数组
            for (int i = 0; i < randomNums.length; i++) {
                randomNums[i] = random.nextInt(10) + 1;
            }
            
            // 正确打印数组元素
            System.out.println(Arrays.toString(randomNums));
        }
    }
    
  2. 手动循环遍历打印
    如果不想导入额外的包,也可以自己写循环逐个输出元素:

    import java.util.Random;
    
    public class RandomNumberGenerator {
        public static void main(String[] args) {
            Random random = new Random();
            int[] randomNums = new int[7];
            
            for (int i = 0; i < randomNums.length; i++) {
                randomNums[i] = random.nextInt(10) + 1;
            }
            
            // 手动拼接成数组格式打印
            System.out.print("[");
            for (int i = 0; i < randomNums.length; i++) {
                System.out.print(randomNums[i]);
                if (i != randomNums.length - 1) {
                    System.out.print(", ");
                }
            }
            System.out.println("]");
        }
    }
    

二、关于数组返回随机字母、符号与数字列表的问题

你提到的“数组返回一组随机字母、符号与数字的列表”,大概率也是和数组的打印行为有关:

  • 如果是char[]类型的数组,直接打印时JVM会自动把它解析成字符串输出。如果你生成的是包含字母、符号、数字的随机ASCII字符存入数组,自然就会显示这些内容。
  • 如果是其他类型数组(比如Object[]),只要数组里存的是随机生成的字符/字符串元素,用上面的Arrays.toString()方法就能正确看到这些元素,而不是默认的哈希码输出。

另外补充一个小细节:如果你的随机数每次运行都完全相同(除了打印的哈希码不同),那可能是你创建Random对象时固定了种子(比如new Random(123)),这种情况下每次运行都会生成一模一样的随机序列。要每次得到不同的随机数,直接用无参构造new Random()就好,它会自动以当前系统时间作为种子。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:27:21