深拷贝与浅拷贝

深拷贝与浅拷贝

深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。

下面用.copyOf()方法举一个例子

public static void main(String[] args) {
        int[] array1={1,2,3,4};
        System.out.println(Arrays.toString(array1));
        int[] array2= Arrays.copyOf(array1,array1.length);
        System.out.println("============");

        for (int i = 0; i < array2.length; i++) {
            array2[0]=99;
            System.out.print(array2[i]+" ");
        }
    }

运行结果如下
在这里插入图片描述
可以看出,通过array2[0]=99;影响不了array1[0],这种拷贝就叫做深拷贝
而且就算想要达到深拷贝,那么对象也必须要拷贝。
在这里插入图片描述

浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝

而在浅拷贝里面,由于此时数组里面存放的是引用数据类型,如下图
在这里插入图片描述
重点来了!!!
在这里插入图片描述
如果面试官问,你这几种拷贝方式是深拷贝还是浅拷贝?

那就要看拷贝的是什么对象?
(1).如果是引用类型***,且单纯的使用.copyOf()等方法那么就是浅拷贝*,如果代码本身处理了深拷贝,那么就是深拷贝
(2).如果是基本数据类型,那么就是深拷贝

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值