有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

参考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);

共 (2) 个答案

  1. # 1 楼答案

    list2[2] = 'e'list2数组的第三个元素分配一个新值“e”。因此,它会修改数组list2list1是包含对同一数组的引用的两个变量

    之前:

    list1  > [a, b, c, d]
              ^
              |
    list2  -/
    

    之后:

    list1  > [a, b, e, d]
              ^
              |
    list2  -/
    

    y += 2递增变量y的值,该值不同于变量x的值:

    之前:

    x   > 5
    y   > 5
    

    之后:

    x  > 5
    y  > 7
    
  2. # 2 楼答案

    这是因为,您要做的第一个操作是在数组上,它们在Java中被视为对象

    但是第二个操作是在int上完成的,这是一个基本类型。因此,参考规则在这里不适用