Mutable object(可变对象) :当对象被创建后,你可以修改对象的状态以及字段。例如 StringBuilder, java.util.Date Immutable object (不可变对象):当对象被创建后,你不能修改对象的状态以及字段,例如包装类,如: Integer, Long,S ...
分类:
编程语言 时间:
2021-02-03 10:59:42
阅读次数:
0
没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String ...
分类:
其他好文 时间:
2021-01-08 11:35:10
阅读次数:
0
1. 引用计数 1)当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1. 2)当对象的引用计数减少为0时,就意味着对象已经再没有被使用了,可以将其内存释放掉。 2. 标记-清除 1)它分为两个阶段:第一阶段是标记阶段,GC会把所有的活动对象打上标记,第 ...
分类:
编程语言 时间:
2020-10-27 11:34:47
阅读次数:
23
元组的定义 元组是不可变对象,可以存放0至多个元素(即元组的成员,也是对象)。元组本身不可修改,如果要修改只能建一个新的。它的元素是不可变对象时不可修改,是可变对象时可以修改。 元组的创建 空元组,一对圆括号。 t=() print(type(t)) out: <class 'tuple'> 1个元 ...
分类:
其他好文 时间:
2020-09-17 23:49:50
阅读次数:
37
传递含可变对象的不可变对象 传递参数是不可变对象,实际上传递的还是对象的引用,传递不可变对象时,如果不可变对象里面包含子对象是可变的,则方法内修改了这个可变对象,原对象也发生 了变化 1 a = 10 2 print('a:',id(a)) 3 4 def test01(m): 5 print('m ...
分类:
编程语言 时间:
2020-09-17 21:44:36
阅读次数:
33
JavaHashing:从重写HashCode到可变对象原创lee锅外的大佬2019-08-05点击左上角蓝字,关注“锅外的大佬”专注分享国外最新技术内容这是一篇关于hashCode方法,可变对象和内存泄漏问题的文章。1.重写hashCode()和equals()的契约每个java对象都有两个非常重要的方法,比如hashCode()和equals()方法。这些方法旨在根据其特定的一般规则进行重写。
分类:
编程语言 时间:
2020-09-03 16:53:31
阅读次数:
48
映射类型用来表示通过关键字索引的任意对象的集合。和序列不同, 映射类型是无 序的。映射类型可以使用数字、字符串、或其他不可变对象来索引。映射类型是可 变类型。 字典是唯一的内建的映射类型。可以使用任何不可变的对象作为字典的关键字(如字 符串、数字、元组等)。列表、字典、及包含可变对象的元组不可以作为 ...
分类:
编程语言 时间:
2020-08-31 13:13:08
阅读次数:
45
所谓不可变集合,顾名思义就是定义了之后不可修改的集合。 一.为什么要使用不可变集合 不可变对象有很多优点,包括: 当对象被不可信的库调用时,不可变形式是安全的; 不可变对象被多个线程调用时,不存在竞态条件问题 不可变集合不需要考虑变化,因此可以节省时间和空间。所有不可变的集合都比它们的可变形式有更好 ...
分类:
其他好文 时间:
2020-07-15 01:17:18
阅读次数:
68
列表 list在循环的时候不能删,因为会改变索引 ls = ['aaa', 'bbb', 'ccc', 'ddd'] for el in ls: print(el) ls.remove(el) print(ls) 结果: aaa ccc ['bbb', 'ddd'] names = ["aa", ' ...
分类:
编程语言 时间:
2020-07-04 18:51:57
阅读次数:
54
1.String为什么是不可变的Unicode字符序列? String内部源码:private final char value[]; 字符串全部储存到一个字节型数组中,并且是final型,也就是常量。我们也称String是不可变对象。 例: 2.字符串的比较 3.StringBuilder类和St ...
分类:
编程语言 时间:
2020-06-26 10:45:31
阅读次数:
54