Java 与对象引用混淆

Java 与对象引用混淆,java,object,arraylist,Java,Object,Arraylist,我正在准备Java认证,在本例中,我对对象引用感到困惑。 在这段代码中,我无法理解为什么当我们为ArrayList和arrays元素分配一个新对象时,它们不会受到影响 ArrayList<StringBuilder> myArrList = new ArrayList<StringBuilder>(); StringBuilder sb1 = new StringBuilder("Jan"); StringBuilder sb2 = new Str

我正在准备Java认证,在本例中,我对对象引用感到困惑。 在这段代码中,我无法理解为什么当我们为ArrayList和arrays元素分配一个新对象时,它们不会受到影响

    ArrayList<StringBuilder> myArrList = new ArrayList<StringBuilder>();
    StringBuilder sb1 = new StringBuilder("Jan");
    StringBuilder sb2 = new StringBuilder("Feb");
    myArrList.add(sb1);
    myArrList.add(sb2);

    StringBuilder[] array = myArrList.toArray(new StringBuilder[2]);
    for(StringBuilder val : array) {
        System.out.println(val);
    }

    StringBuilder sb3 = new StringBuilder("NNN");
    sb2 = sb3;

    for(StringBuilder val : array) {
        System.out.println(val);
    }

    for(StringBuilder val : myArrList) {
        System.out.println(val);
    }

如果您能提供简单的解释,我将不胜感激。谢谢。

参考文献是指针。将新值赋给变量包括使该指针指向另一个对象。因此,在开始时,您有一个包含两个元素的数组:

array[0] ---> Jan <--- sb1
array[1] ---> Feb <--- sb2
array[0]-->Jan-Feb-Jan-Feb NNN
然后您说sb2变量应该引用与sb3变量相同的对象:

array[0] ---> Jan <--- sb1
array[1] ---> Feb 
sb3 --------> NNN <--- sb2
数组[0]-->1-2月

sb3------>NNN引用是指针。将新值赋给变量包括使该指针指向另一个对象。因此,在开始时,您有一个包含两个元素的数组:

array[0] ---> Jan <--- sb1
array[1] ---> Feb <--- sb2
array[0]-->Jan-Feb-Jan-Feb NNN
然后您说sb2变量应该引用与sb3变量相同的对象:

array[0] ---> Jan <--- sb1
array[1] ---> Feb 
sb3 --------> NNN <--- sb2
数组[0]-->1-2月
sb3------>NNN阅读此阅读此