Its probably a very simple one but its' still confusing me!
import java.util.ArrayList;
public class Sample {
    ArrayList<Integer> i = new ArrayList<>();
    ArrayList<Integer> j = new ArrayList<>();
    /**
     * @param args
     */
    public static void main(String[] args) {
        new Sample().go();
    }
    private void go() {
        i.add(1);
        i.add(2);
        i.add(3);
        j=i;
        i.remove(0);
        System.out.println(i + "asd" + j);
    }
}
I tried to print it :
[2, 3]asd[2, 3]
Why does j change when i changes? Does not happen with primitives though!
 
     
     
     
     
     
    