什么是不可变对象? 众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其 ...
分类:
其他好文 时间:
2018-10-25 00:14:12
阅读次数:
194
1.String与StrIngBuffer StringBuilder的主要区别在于StrIng是不可变对象,每次对String对象进行修改之后,相对于重新创建一个对象。 String源码解读: 不管何种String的构造函数,在初始化之后,其内部value是不可改变 StringBuilder源码 ...
分类:
其他好文 时间:
2018-10-21 12:08:37
阅读次数:
128
本节主要内容 1.python 基本数据类型回顾 2.int 数字类型 3.bool 布尔类型 4.str 字符串类型 一.python 基本数据类型 1.int ==>整数,主要用来进行数学运算 2.str ==>字符串,可以保存少量数据并进行相应的操作 3.bool ==>判断真假,True,F ...
分类:
其他好文 时间:
2018-10-20 11:49:29
阅读次数:
109
四个线程安全策略线程限制:一个被线程限制的对象,由线程独占,并且只能被占有它的线程修改共享只读:一个共享只读的对象,在没有额外同步的情况下,可以被多个线程并发访问,但是任何线程都不能修改它线程安全对象:一个线程安全的对象或者容器,在内部通过同步机制来保证线程安全,所以其他线程无需额外的同步就可以通过公共接口随意访问它被守护对象:被守护对象只能通过获取特定的锁来访问不可变对象有一种对象发布了就是安全
分类:
编程语言 时间:
2018-10-18 18:07:39
阅读次数:
211
浅拷贝新的对象指向原来对象的地址 深拷贝新的对象中,原来是可变对象,会新复制一份值指向新的地址[11,22,33]若原来的对象里含有可变对象,里面的这个可变对象也会指向新的地址['qwer', 123, [44,55]] 参考:https://www.cnblogs.com/wilber2013/p ...
分类:
其他好文 时间:
2018-10-18 01:13:54
阅读次数:
111
发布对象与逸出发布对象:使一个对象能够被当前范围之外的代码所使用,例如通过方法返回对象的引用,或者通过公有的静态变量发布对象对象逸出:一种错误的发布,当一个对象还没有构造完成时,就使它被其他线程所见不正确的发布可变对象导致的两种错误:发布线程意外的所有线程都可以看到被发布对象的过期的值线程看到的被发布对象的引用是最新的,然而被发布对象的状态却是过期的不安全的发布示例:packageorg.zero
分类:
其他好文 时间:
2018-10-17 01:00:18
阅读次数:
207
字典字典是无序的字典的key只能是不可变对象,不能是listdict创建字典创建空字典,并赋值d={}d["name"]="huhongqiang"d["sex"]="M"d["height"]=170d{‘name‘:‘huhongqiang‘,‘sex
分类:
编程语言 时间:
2018-10-15 12:21:25
阅读次数:
153
函数默认参数使用可变对象 输出 函数本身也是一个对象,默认参数绑定于这个函数对象上 append这类方法会直接修改对象,所以下次调用此函数时,其绑定的默认参数已经不再是空list了 ...
分类:
编程语言 时间:
2018-10-12 21:15:53
阅读次数:
151
不可变对象为字符串,元组等 可变对象为列表,字典,集合等。 浅拷贝只是对已经存在的内存新增加一个对象引用。, 深拷贝就是重新申请一个新的内存,使这个是新对象是新内存地址的引用。 对于可变对象引用时时经常出现。 考虑以下两段代码: 代码1 代码2 结论: 代码1中l.append中新添加的对象为新创建 ...
分类:
其他好文 时间:
2018-10-05 17:22:55
阅读次数:
130
首先深拷贝和浅拷贝都是对象的拷贝,都会生成一个看起来相同的对象,他们本质的区别是拷贝出来的对象的地址是否和原对象一样,也就是地址的复制还是值的复制的区别。 深拷贝和浅拷贝需要注意的地方是可变元素的拷贝,在浅拷贝时:拷贝出来的新对象的地址和原对象是不一样的,但是新对象里面的可变元素(如列表)的地址和原 ...
分类:
编程语言 时间:
2018-10-04 16:37:10
阅读次数:
231