AchillessJ 2021-01-29 10:36 采纳率: 50%
浏览 66

List的add方法添加的是对象的引用,但对String为什么不是

public class ListAddTest {
    public static void main(String[] args) {        
         
         List<String> list = new ArrayList<String>();
         List<String[]> list1 = new ArrayList<String[]>();         
            String str = "";
            String [] strs = new String[1];
            for(int i = 0; i < 3; i++){
                str = "" + i;
                strs[0] = "" + i;
                list.add(str);
                list1.add(strs);
                
            }
            for(int i = 0; i < 3; i++) {
                System.out.println( list.get(i));
            }
            System.out.println();
            for(int i = 0; i < 3; i++) {
                System.out.println( list1.get(i)[0]);
            }
            System.out.println();
            System.out.println(list.get(2)==list1.get(2)[0]);
         }

}

的输出为:

0
1
2

2
2
2

false

String也是引用类型,但是list添加String[]的时候就是对象的引用,而添加String的时候就是对象的拷贝,为什么呢?

  • 写回答

4条回答 默认 最新

  • BCS-点心 2021-01-29 11:12
    关注

    ==比较的是地址,数组和字符串指向地址不同,所以就是false

    你这个测试并不能说明:list添加String[]的时候就是对象的引用,而添加String的时候就是对象的拷贝

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?