Java笔记3|foreach循环

Foreach循环与for循环

foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。
foreach语句是for语句的特殊简化版本,又叫“增强for”,但是foreach语句并不能完全取代for语句。

Foreach循环在数组的应用

一.在一维数组的应用

普遍适用于一维数组的遍历
• 普通变量容器不能通过for-each循环来改变内容
• 普通对象容器可以通过for-each循环来改变内容

1.普通一维数组
可以遍历,无法修改内容
		int [] data = {23,45,67,89,100,1111};
		for(int k : data) //k为每一轮拿出data中的一个元素
		{
			System.out.print(k+" ");
		}

注意1:foreach只能访问集合中的元素,不能对其中的元素进行修改!
因为从数组中拿出来的元素只是值的对应关系,而不是位置的对应关系!

		int [] data = {999,999,999,999,999,999};
		//data[] = {1,2,3,4,5};//错,无法赋值,初始化只能在定义的时候做
		for(int i = 0;i < data.length;i++)
		{
			data[i]=1;//普通for循环可以修改数组的值
		}
		for(int k : data) //每一轮拿出data中的一个元素
		{
			k=111;//无法修改!
		}
		for(int k : data)
		{
			System.out.print(k+" ");
			//还是{1,1,1,1,1},说明foreach循环没有改变数组的值
		}
2.特殊类
2.1字符串数组(也是对象数组的一种)
可以遍历,无法修改内容
		//2.1.字符串数组
		String[] sss = new String[10];
		for(int i=0;i<sss.length;i++) {
			sss[i] = new String("abc");
		}
		for( String s : sss) {
			s = "fshhr";//修改失败! 只是将 s 管理的字符串变成了"fshr"..
		}
		for( String s : sss) {
			System.out.println(s);
		}	
2.2字符串容器类 ArrayList
可以遍历,无法修改内容
		//2.2字符串容器
		ArrayList<String> aaa = new ArrayList<String>();
		aaa.add("first");
		aaa.add("second");
		for(String s:aaa) {
			System.out.println(s);
		}
//		for(int i = 0;i < aaa.size();i++) {
//			System.out.println(aaa.get(i).replace('f','d'));
//		}//普通for遍历
		for(String s:aaa){
			s=s.replace('f','d');//修改失败
		}
		for(String s:aaa) {
			System.out.println(s);
		}
2.3散列表HashMap
可以遍历,无法修改内容
public class HashMap_{
	private HashMap<Integer,String> coinnames = new HashMap<Integer, String>();
	
	public HashMap_(){//构造器(构造方法)
		//键一定是唯一的,后面的会覆盖前面的键
		coinnames.put(1, "penny");
		coinnames.put(10, "dime");
		coinnames.put(25, "quarter");
		coinnames.put(50, "half-dollar");
		System.out.println(coinnames);//可以直接输出
		//for-each循环遍历HashMap的方法
		for(Integer k : coinnames.keySet()) {//从哈希表的键集合里取出每个键
			String s = coinnames.get(k); //获取键的值
			System.out.println(s);
		}
	}
	public static void main(String] args){
		HashMap_ hm = new HashMap_();//每一个键值对都是对象,都是这个类的管理者
		System.out.println(hm.getName(amount));
	}
}
	
3.对象数组
可以遍历,可以用容器的方法修改容器内容

		//3.对象数组
		Int_[] in = new Int_[10]; //对象数组 
		for(int i = 0;i < in.length;i++) {
			in[i] = new Int_();
		}
		
		for(Int_ k :in) {
			k.repalceA(45);//foreach中可以用对象容器的方法修改容器内容  
			//k是a的元素(许多个管理者)的复制品,那么就相当于把a的管理权限复制给了k,k就可以管理a所管理的内容

		}
		for( Int_ k : in) {
			System.out.println(k.getA());
		}

注意2:for_each循环不可以改变变量的值,但是可以用它去改变对象的值。

此处参考:Java中用foreach遍历真的不能修改数据?

二.在二维数组中的应用
同样适合于二维数组的遍历
//二维的for_each循环
		for(int[] i : arr)//二维数组取出每一行,注意行是个一维数组!
		{
			for(int j : i)//一行中的取出每一列
			{
				System.out.print(j+" ");
			}
		}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Java中的foreach循环是for循环的一种特殊情况下的增强版本,它可以用来遍历数组或者集合。然而,与for循环不同的是,foreach循环无法在遍历过程中对原数组或者集合进行修改。\[1\]\[2\]这意味着在foreach循环中,无法直接修改数组或者集合中的元素。如果需要对数组或者集合进行修改,就需要使用普通的for循环来实现。\[1\]\[2\]另外,foreach循环相对于for循环来说,简化了编程,提高了代码的可读性和安全性,特别是在遍历集合时,不用担心数组越界的问题。因此,在能使用foreach循环的情况下,推荐使用它来遍历数组或者集合。\[3\] #### 引用[.reference_title] - *1* *2* [Java--foreach循环](https://blog.csdn.net/qq_42363032/article/details/89042382)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [JAVA中的foreach循环](https://blog.csdn.net/luoyu0620/article/details/115027805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值