黑马程序员技术交流社区
标题:
在forerch中改变其值,原始值会不会改变的问题
[打印本页]
作者:
不可言
时间:
2014-6-15 14:49
标题:
在forerch中改变其值,原始值会不会改变的问题
本帖最后由 不可言 于 2014-6-16 13:14 编辑
int[] iArr = {1,2,3};
for(int x : iArr)
x = 4;
//输出结果是123,说明在for-each里面改变的值对于原数组类型不影响
for(int x : iArr)
System.out.println(x);
复制代码
下面使用一个Person类型的数组,并改变Person中age的值
class Person
{
String name;
int age;
Person(String n, int a){
name = n;
age = a;
}
public String toString(){
return name+":"+age;
}
}
复制代码
//定义一个Person类型的数组
Person[] pArr = new Person[3];
pArr[0] = new Person("1",1);
pArr[1] = new Person("2",2);
pArr[2] = new Person("3",3);
for(Person p : pArr) //改变其对象引用的值
p.age = 4;
for(int x = 0;x<3;x++) //输出结果就变成了 1:4 2:4 3:4
System.out.print(pArr[x]+"\t");
复制代码
为什么一样是引用类型,数组中的值在forerch中不会改变?
作者:
xp8812
时间:
2014-6-15 15:17
本帖最后由 xp8812 于 2014-6-15 15:18 编辑
在第一段代码里面你改变的只是int x =4,并没有改变int[] iArr数组里的值,在第三段代码里for(Person p : pArr) //改变其对象引用的值
p.age = 4;
把p.age的值已经改了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2