不太懂为啥选A,刚刚接触Java

img

答案选A
list1和list2都是静态数组,list2=list1会让list2指向list1的内存,list2=list1后,list2中的值就是3,2,1
list1[0]=0,list1[1]=1,会改变list1的值,因为list2指向了list1的内存,所以,list2中的值也会发生改变,因为他们指向了同一块内存空间。所以,最后,list2中的值是0,1,2,逆序输出就是2 1 0

因为list2=list1,指向同一个地址。
list2={3,2,1}
又修改了第一个位置和第二个元素位置的值。
所以list2={0,1,1}
又修改list2[2]=2
所以最终list2={0,1,2}

语句 list2 = list1; 执行后 list2 和 list1 变量指向的是同一个对象实例,因此修改 list2 和 修改 list1 中的元素是一个效果

int list1[] = {3,2,1} list1变量的内容是指向{3,2,1}的内存地址,我们假设它的地址为 00011
int list2[] = {1,2,3} list2变量的内容同样也是指向{1,2,3}内容的内存地址,我们假设它的地址为 00012
list2 = list1;该语句使 list2获取了list1对应的内存地址 00011,即 list2与list1同时指向了 00012
给list1从新赋值 list[0] = 0,list[0] = 1,list[0] = 2 这时修改的是00012对应的数组内容(上一步 list2=list1也使list2指向了00012这块区域,所以现在访问list2同样也是访问00012对应的内容)