参考Java逻辑混乱
有人能告诉我为什么用这个代码打印出“abeb”而不是abcb吗?我理解这是因为您引用了列表1中的列表2,所以更改列表2也会更改列表1,但我并不完全理解这一点
char [] list1 = {'a','b','c','d'};
char [] list2 = list1;
list2[2] = 'e';
list1[3] = list2[1]
for (char a: list1)
out.print(a)`
为什么相同的逻辑(我理解的逻辑)没有在代码中应用? 它将x打印为“5”,这是我从上面的代码中理解的,应该是7
int x = 5;
int y = x;
y += 2;
out.print(x);
# 1 楼答案
list2[2] = 'e'
为list2
数组的第三个元素分配一个新值“e”。因此,它会修改数组list2
和list1
是包含对同一数组的引用的两个变量之前:
之后:
y += 2
递增变量y
的值,该值不同于变量x
的值:之前:
之后:
# 2 楼答案
这是因为,您要做的第一个操作是在数组上,它们在Java中被视为对象
但是第二个操作是在
int
上完成的,这是一个基本类型。因此,参考规则在这里不适用