增强for循环能否修改数组和集合的值

本文详细介绍了Java中的增强for循环(foreach)在处理数组、集合以及对象引用时的行为差异。在数组中,增强for循环只用于遍历,无法修改原数组;而在集合中,由于使用了临时变量,也无法直接修改元素。然而,当数组包含对象引用时,通过增强for循环可以改变对象的属性。总结了增强for循环在不同场景下的应用特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数组中的增强for循环:

public class Test5 {
	public static void main(String[] args) {
		int array[] = {1,2,3,4,5};
		
		//增强for循环修改数组的值
		for (int arr : array) {
			System.out.println(arr);
			arr = 20;
		}
		
		System.out.println("-------------------");
		
		//遍历修改后的数组
		for (int arr : array) {
			System.out.println(arr);
		}
	}
}

运行结果:

1
2
3
4
5
------------
1
2
3
4
5

public class Test5 {
	public static void main(String[] args) {
		String s[] = {"aa","cc","ss"};
		
		//修改string数组的值
		for (String i : s) {  //String i : s相当于string i = s[0];  从string池拷贝的
			i += "java";
		}
	
		//查看修改后的结果
		for (String i : s) {
			System.out.println(i);  //aa  cc ss
		}	
	}
}

 运行结果:

aa
cc
ss

总结: 

        foreach使用临时变量将数组中的值进行赋值查看,所以修改临时变量不会改变数组原值,在数组中只能查看不能修改

二、集合中的增强for循环

import java.util.ArrayList;
public class Test5 {
	public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		list.add(5);
		list.add(5);
		list.add(5);
		list.add(5);
		list.add(5);
		
		//增强for循环修改集合的值
		for (Integer integer : list) {
			integer += 20;
		}
		
		//遍历修改后的值
		for (Integer integer : list) {
			System.out.println(integer);  //5 5 5 5 5
		}		
	}
}

运行结果:

5
5
5
5
5
总结:

         foreach使用临时变量将集合中的值进行赋值查看,所以修改临时变量不会改变集合中的原值,在集合中只能查看不能修改

三、当定义数组的时候,填入的是地址(new Person()的时候)

public class Test5 {
	public static void main(String[] args) {
		Person a[] = { new Person(), new Person(), new Person() };
		for (Person i : a) {
			i.num += 2;
		}
		for (Person i : a) {
			System.out.println(i.num); // 2 2 2
		}
	}
}

class Person {
	int num;
}

运行结果:

2
2
2

总结:

        当定义数组的时候,填入的是地址(new Person()的时候),可以通过增强for循环改变值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值