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

Java数组输出异常:运行程序后显示[I@4554617c如何解决?

嘿,这个问题我之前也碰到过!你看到的[I@4554617c其实是Java数组默认的toString()输出结果,我来给你拆解下:[代表这是一个数组,I表示数组元素是int类型,@后面的十六进制数是数组对象的哈希码。这是因为你直接打印数组对象时,Java调用的是Object类的toString()方法,它并不会帮你把数组里的具体元素输出出来。

下面给你几个解决办法,按需选择:

方法一:用Arrays.toString()(最推荐)

这是Java官方提供的最简便的数组打印方式,只需要先导入java.util.Arrays包,然后修改你的打印语句就行。

修改后的完整代码:

import java.util.Arrays;

public class Firstlast6 { 
    public static void main(String[] args) { 
        int testnums[] = {6,1,5,3}; 
        firstLast6(testnums); 
        // 替换成Arrays.toString()打印数组内容
        System.out.println(Arrays.toString(testnums)); 
    } 
    public static boolean firstLast6(int[] nums){ 
        if (nums[0] == 6){ 
            return true; 
        }else if (nums[nums.length-1] == 6){ 
            return true; 
        }else { 
            return false; 
        } 
    } 
}

运行后就能输出[6, 1, 5, 3],完全符合你的预期。

方法二:手动遍历数组打印

如果不想额外导入包,也可以自己写循环遍历数组元素,自定义输出格式:

public class Firstlast6 { 
    public static void main(String[] args) { 
        int testnums[] = {6,1,5,3}; 
        firstLast6(testnums); 
        // 手动遍历打印
        System.out.print("[");
        for (int i = 0; i < testnums.length; i++) {
            System.out.print(testnums[i]);
            if (i != testnums.length - 1) {
                System.out.print(", ");
            }
        }
        System.out.println("]");
    } 
    // 原firstLast6方法不变
    public static boolean firstLast6(int[] nums){ 
        if (nums[0] == 6){ 
            return true; 
        }else if (nums[nums.length-1] == 6){ 
            return true; 
        }else { 
            return false; 
        } 
    } 
}

这种方式适合需要自定义输出样式的场景,比如去掉方括号或者调整分隔符。

方法三:Java 8+ 用Stream API

如果你使用的是Java 8及以上版本,还可以用Stream来输出数组元素:

import java.util.Arrays;

public class Firstlast6 { 
    public static void main(String[] args) { 
        int testnums[] = {6,1,5,3}; 
        firstLast6(testnums); 
        // Stream方式打印
        System.out.print("[");
        Arrays.stream(testnums)
              .forEach(num -> System.out.print(num + (num != testnums[testnums.length-1] ? ", " : "")));
        System.out.println("]");
    } 
    // 原firstLast6方法不变
    public static boolean firstLast6(int[] nums){ 
        if (nums[0] == 6){ 
            return true; 
        }else if (nums[nums.length-1] == 6){ 
            return true; 
        }else { 
            return false; 
        } 
    } 
}

另外提一句:你的firstLast6方法返回了一个boolean值,但main方法里调用时没有接收或打印这个结果,如果需要看到方法的判断结果,可以加一句System.out.println(firstLast6(testnums));,这样就能知道数组首尾是否包含6了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:51:52