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

Java中为何foreach循环输出数组元素,普通for循环却输出地址?

问题解析:普通for循环打印数组地址而非元素的原因

问题根源

你在普通for循环的打印语句里犯了一个简单的错误——你打印的是整个数组对象z,而不是数组的第i个元素z[i],这就是两种循环输出结果不一致的核心原因。

为什么会输出地址?

Java里所有数组都是Object的子类,当你直接打印数组对象时,默认调用的是Object类的toString()方法,输出格式为[类型标识@哈希码]:

  • [I代表这是一个int类型的数组
  • @后面的字符串是数组对象的哈希值

所以你在普通for循环里循环6次,每次都打印整个数组对象,自然会重复输出同一个地址。

为什么foreach循环正常?

foreach循环的语法for (int i : z)中,变量i是直接迭代数组z中的每一个int类型元素,System.out.println(i)会调用Java为int类型专门提供的println(int)重载方法,直接输出整数的数值,所以能得到正确的元素值。

修正后的代码

把普通for循环里的打印语句改成z[i]即可:

public class ArrayReturn {
    public static int[] Multi(int []a)
    {
        for (int i = 0; i < a.length; i++) {
            a[i] = a[i]*2;
        }
        return a;
    }
    public static void main(String[] args) {
        int ar[] = {2,3,4,5,6,7};
        int z[] = Multi(ar);
        // 修正:打印数组的第i个元素z[i]
        for (int i = 0; i < z.length; i++) {
            System.out.println(z[i]);
        }
        for (int i : z) {
            System.out.println(i);
        }
    }
}

修正后的输出会是:

4
6
8
10
12
14
4
6
8
10
12
14

内容的提问来源于stack exchange,提问作者H D VIVEK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:55:19