如以下Java程序:
public class test4 { public static void main(String args[]){ int [] a=new int[3]; for(int j:a){ j=55; }
for(int j:a){
System.out.println(j+" ");
} } }
其结果最后输出的并不是直观认为的55 55 55,而是0 0 0
其原因在于foreach每次循环只能获得对象的值,而不能获得对象的句柄,故对对象副本的任何改变都无法对对象本身造成任何影响,如以下过程:
int a = 1; int b = a; b = 2; System.out.println(a);