java list 用add方法将一个对象赋值到另一个list中

如题,然后修改第一个list中对象的属性,那么第二个list中的对象的属性也会跟着变化吗?
如果是这样,怎么才能复制一个全新的对象到新list中呢,互不影响的


 List<String> firstList = new ArrayList<>();
 firstList.add("1");
 firstList.add("2");
 firstList.add("3");

        List<String> secondList = new ArrayList<>(firstList);
        firstList.add(0,"4");
        System.out.println("firstList:"+firstList.get(0));
        System.out.println("secondList:"+secondList.get(0));

输出结果:
firstList:4
secondList:1

针对这个问题,首选要搞懂对象引用的含义。
list l = new ArrayList();
l是分配在堆栈上的对象引用,它指向了堆中new ArrayList()对象所在的内存空间。
如果你的第二个list声明为list l2 = l1; 那么这两个对象引用就指向了同一个ArrayList对象,因此用第一个list引用改变实际对象后,再用第二个list访问实际对象时会发现它已经改变。

为了让你一个list引用改变实际对象后不会影响到第二个list引用的访问,可以两个list引用指向不同的对象。即把第一个list引用指向的对象复制一份成为一个新的对象,第二list引用指向这个新的对象。
综上,list l2 = new ArrayList(l1);

可查看链接:https://blog.csdn.net/qq_51964209/article/details/122734075?spm=1001.2014.3001.5502

对象内存地址相同,去改变当前对象的属性,那么肯定是相同的,除非你将2个内存地址不相同的对象赋值到不一样的list中