Java增强for循环会修改数组吗?新手遇实际修改情况求解答
增强for循环为啥没阻止我修改数组?
你误解了增强for循环的限制——不是增强for循环不能修改数组,而是不能通过增强for循环的迭代变量(也就是你代码里的j)来修改数组元素。
你的代码里,修改数组的操作是a[i1] = j + "s",这是直接通过数组下标i1给数组对应位置赋值,和增强for循环本身没关系。不管用普通for还是增强for循环,只要直接操作数组下标,就会改变数组里的元素。
拆解下你的代码逻辑:
- 第一次循环:
j是数组第一个元素"dog",你通过a[0] = j + "s"把数组第0位改成"dogs",随后i1自增到1。 - 第二次循环:
j是数组第二个元素"cat",a[1] = j + "s"把第1位改成"cats",i1自增到2。 - 第三次循环:
j是数组第三个元素"turtle",a[2] = j + "s"把第2位改成"turtles",此时i1已经是2,不再自增。
要是想验证“增强for循环的迭代变量改不了数组”,可以试试这段代码:
String[] a = {"dog", "cat", "turtle"}; for (String j : a) { j = j + "s"; // 这里只是修改局部变量j的引用,和数组本身无关 } System.out.println(java.util.Arrays.toString(a)); // 输出还是[dog, cat, turtle]
这时候数组就不会变,因为你只改了j这个局部变量的指向,根本没碰数组里的元素。
内容的提问来源于stack exchange,提问作者SBh
相关产品推荐
相关产品推荐

