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
相关产品推荐
相关产品推荐

