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

Java增强for循环使用疑问:数组赋值与长度获取难题

问题分析与解决方案

嘿,我来帮你搞定这个问题!你遇到的两个小麻烦其实都和增强for循环(Enhanced For Loop)的特性有关,咱们一步步拆解清楚:

为什么用增强for循环赋值后输出全是0?

首先得明确一个关键点:增强for循环遍历基本类型数组时,拿到的是数组元素的副本,不是原元素的引用。你修改这个副本的值,完全不会影响原数组里的元素——而Java里整数数组初始化后默认值都是0,所以最后打印出来自然全是0啦。

问题1:如何实现元素值递增?

增强for循环本身就不适合用来给基本类型数组赋值(就是因为刚才说的副本问题)。如果要实现元素从10、20……这样递增,最直接靠谱的方式是用普通的索引for循环,代码示例如下:

int[] arr = new int[10];
// 普通for循环通过索引直接操作原数组元素
for (int i = 0; i < arr.length; i++) {
    arr[i] = (i + 1) * 10; // 第1个元素是10,第2个是20,以此类推
}

要是你纠结能不能用增强for循环实现?很遗憾,对于int这种基本类型来说做不到——就算换成包装类Integer,因为Integer是不可变类,修改后也不会同步到原数组里。所以老老实实用普通for循环赋值才是正道。

问题2:如何获取数组长度?

这个超简单!不管你用哪种循环,Java数组本身自带length属性,直接通过数组名.length就能获取,和循环类型完全无关。比如上面代码里的arr.length,就能拿到你需要的长度10。

完整可运行代码示例

把赋值和打印的逻辑结合起来,完整的可运行代码如下:

public static void main(String[] args) {
    // 初始化长度为10的整数数组
    int[] numberArray = new int[10];
    
    // 用普通for循环给数组赋值,实现元素递增
    for (int index = 0; index < numberArray.length; index++) {
        numberArray[index] = (index + 1) * 10;
    }
    
    // 用增强for循环打印数组元素(读取操作非常适合用增强for循环,代码更简洁)
    System.out.println("数组元素输出:");
    for (int num : numberArray) {
        System.out.println(num);
    }
}

小总结

  • 增强for循环适合读取/遍历数组元素,代码更简洁;
  • 要修改基本类型数组的元素,必须用普通索引for循环,通过索引直接操作原数组;
  • 数组长度永远用数组名.length获取,这是Java数组的内置属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:24:48