一、数组中的增强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循环改变值