Java后台开发面试

来源:互联网 发布:vue.js 格式化数字 编辑:程序博客网 时间:2024/06/04 18:05

面试题: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语句。

原创粉丝点击