Java教程

四、数据类型 10.不可变类型的深浅拷贝

本文主要是介绍四、数据类型 10.不可变类型的深浅拷贝,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

不可变类型数据深浅copy

浅copy:副本对象和子对象都仅被引用,不会被copy
    深copy:若原对象中含有可变类型数据,则copy最外层对象和其中的可变对象,其余不可变对象仅被引用
            若原对象中不含可变类型数据,则副本对象和子对象都仅被引用,不会被copy

import copy

A = [1,2,3]
B = (4,5,6)
C = (A,B)
print('A:',A,id(A))
print('B:',B,id(B))
print('C:',C,id(C),' C[0]:',C[0],id(C[0]),' C[1]:',C[1],id(C[1]))

# 浅拷贝
# D = copy.copy(C)
# print('D:',D,id(D))


# 深拷贝
# 原对象中含有可变类型数据
D = copy.deepcopy(C)
print('D:',D,id(D),' D[0]:',D[0],id(D[0]),' D[1]:',D[1],id(D[1]))

# 原对象中不含可变类型数据
F = (B,(7,8),9,'不含可变类型数据')
print('F:',F,id(F),' F[0]:',F[0],id(F[0]),' F[1]:',F[1],id(F[1]))
E = copy.deepcopy(F)
print('E:',E,id(E),' E[0]:',E[0],id(E[0]),' E[1]:',E[1],id(E[1]))


A: [1, 2, 3] 1044774867464
B: (4, 5, 6) 1044905880536
C: ([1, 2, 3], (4, 5, 6)) 1044905907080  C[0]: [1, 2, 3] 1044774867464  C[1]: (4, 5, 6) 1044905880536
D: ([1, 2, 3], (4, 5, 6)) 1044905906824  D[0]: [1, 2, 3] 1044781494344  D[1]: (4, 5, 6) 1044905880536
F: ((4, 5, 6), (7, 8), 9, '不含可变类型数据') 1044776174760  F[0]: (4, 5, 6) 1044905880536  F[1]: (7, 8) 1044905875272
E: ((4, 5, 6), (7, 8), 9, '不含可变类型数据') 1044776174760  E[0]: (4, 5, 6) 1044905880536  E[1]: (7, 8) 1044905875272
这篇关于四、数据类型 10.不可变类型的深浅拷贝的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!