Java后台开发面试

面试题:Java中for和foreach区别在哪里?什么时候用for?什么时候用foreach?

从Java 5 之后,Java提供另一种更简单的循环:foreach循环,这种循环遍历数组和集合更加简洁。使用foreach循环遍历数组和集合元组时,无须获得数组和集合的长度,无须根据索引来访问数组元素和集合元素,foreach循环会自动遍历数组和集合的每个元素。

一、常见使用方式

1. foreach遍历数组

public class ForeachTest{
  public static void main(String[] args){
    String[] books = {"Java","C++","C"};
    for(String book:books){
      System.out.println(book);
    }
  }
}   

2. foreach遍历List

public class ForeachTest{
  public static void main(String[] args){
    List<String> list = new ArrayList<String>();
    list.add("Java");
    list.add("C++");
    list.add("C");
    for(String str : list){
      System.out.println(str);
    }
  }
}   

从上面程序可以看出,使用foreach循环遍历数组元素(或集合元素)时无须获得数组长度,也无须根据索引来访问数组元素(或集合元素)。

foreach循环和普通循环不同的是,它无须循环条件,无须循环迭代语句,这些部分都由系统来完成,foreach循环自动迭代数组(或集合)的每个元素,当每个元组都被迭代一次时,foreach循环自动结束。

二、局限性
foreach虽然能遍历数组或者集合,但是只能用来遍历,无法在遍历的过程中对数组或者集合进行修改,而for循环可以在遍历的过程中对数组或者集合进行修改。

1. 数组

public class ForeachTest{
  public static void main(String[] args){
    String[] books = {"Java""C++""C"};
    //foreach
    for(String book:books){
        book = "Python";
    }
    System.out.println("foreach:" + Arrays.toString(books));
    //for
    for(int i = 0; i < books.length ; i++){
         books[i] = "Python";
    }
   System.out.println("for:" + Arrays.toString(books));
  }
} 

输出

foreach:[Java, C++, C]
for:[Python, Python, Python]

2. 集合

public class ForeachTest{
  public static void main(String[] args){
    List<String> list = new ArrayList<String>();
    list.add("Java");
    list.add("C++");
    list.add("C");
    //foreach
    for(String str : list){
        str = "Python";
    }
    System.out.println("foreach:" + Arrays.toString(list.toArray()));
    //for
    for(int i = 0; i < list.size(); i++){
        list.set(i,"Python");
    }
    System.out.println("for:" + Arrays.toString(list.toArray()));
  }
}   

输出

foreach:[Java, C++, C]
for:[Python, Python, Python]

总结如下:
1、如果只是遍历数组或者集合中的元素,用foreach循环;
2、如果要修改数组或者集合中的元素,就要用for循环。
3、foreach不能使用下标来访问每个元素,因此不能用于增加、删除等复杂操作。
4、foreach语句是for语句的特殊版本,但是foreach语句并不能完全取代for语句。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值