数组问题:返回随机字符及打印出现[I@6d06d69c异常
解决数组打印异常与随机数生成问题
看起来你遇到了Java数组操作里的两个常见小坑,我来帮你逐一捋清楚:
一、为什么打印数组会得到[I@6d06d69c?
这个输出其实是Java中int数组默认的toString()方法返回的结果:
[I表示这是一个int类型的数组@后面的一串字符是数组对象的哈希码值,完全不是你要的数组元素内容
之所以会这样,是因为数组继承自Object类,而Object的默认toString()就是返回「类型@哈希码」的格式,不会自动遍历打印元素。
两种快速解决方法:
用
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)); } }手动循环遍历打印
如果不想导入额外的包,也可以自己写循环逐个输出元素: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
相关产品推荐
相关产品推荐

