java for循环增强(foreach)
for循环增强,在此之前还不知道foreach有这样的功能,先鄙视一下自己,留给自己看:
功能:
***若List用foreach : [ for(Student stu : list) ]这种形式遍历
***若此时,stu.setName()时,相当于在改变list的集合中当前对象的name值。
***相当于原来的for循环中 [ list.get(i).setName(); ]语句的作用,废话不多说,上代码
实体类Student(随便起一个就行)
package com.core.foreach; public class Student { private int id ; private String name ; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
测试类ListTest
下方的方法reSetStuList()中两个for循环的结果都是一样的
package com.core.foreach; import java.util.ArrayList; import java.util.List; public class ListTest { public static void main(String[] args) { List<Student> stuList = setStuList(); List<Student> restuList = reSetStuList(stuList); for(int i = 0 ; i < restuList.size() ; i ++){ System.out.println(restuList.get(i).getName()); } } public static List<Student> setStuList(){ List<Student> stuList =new ArrayList<Student>(); for(int i = 0 ; i < 10 ; i++){ Student stu = new Student(); stu.setAge(i); stu.setId(i); stu.setName("刘备"); stuList.add(stu); } return stuList; } public static List<Student> reSetStuList(List<Student> stuList){ // for(int i = 0 ; i < stuList.size() ; i++){ // stuList.get(i).setName("张飞"); // } for(Student stu : stuList){ stu.setId(20); stu.setAge(20); stu.setName("张飞"); } return stuList; } }
结果均是打印10个"张飞"
也可以在for循环这里打断点,每循环一次可以看看list的值是否被改变了