不可变对象执行不可变拷贝(copy)就是浅拷贝如果执行拷贝时 只要有可变的无论是可变对象还是可变拷贝(mutableCopy)就是深拷贝只有源对象和副本对象都不可变才是浅拷贝,其它都是深拷贝!copy 创建的是不可变副本(NSString , NSArray, NSDictionary)mutabl...
分类:
其他好文 时间:
2016-01-25 21:17:18
阅读次数:
219
变量:对象的引用。变量是可变的。变量是无类型的(类似于void*),对象是有类型的。可变对象:list dict 对象的值可以改变不可变对象:int string numbers bool 对象的值在它被分配内存的那一刻起就不能改变。函数改不改变实参的值: python函数参数传递:引用传递。...
分类:
编程语言 时间:
2016-01-18 19:08:17
阅读次数:
142
"注意不要编写返回引用可变对象的访问器方法".因为会破坏类的封装性,引用的内容可能会被改变,产生业务逻辑上的错误.什么是可变对象?先要搞清楚java中值传递和引用传递的问题,总结如下:1.对象就是传引用2.原始类型就是传值3.String,Integer, Double等immutable类型因为没...
分类:
编程语言 时间:
2016-01-06 17:28:19
阅读次数:
121
非容器对象:NSStringNSMutableString不可变对象复制:copy是指针复制(浅拷贝);mutableCopy就是对象复制(深拷贝)。可变对象复制:都是深拷贝,但是copy返回的对象是不可变的。copy浅copy,不会产生新的地址,两个指针指向同一地址深copy,会产生新的地址,两个...
分类:
其他好文 时间:
2015-12-25 15:00:37
阅读次数:
162
首先,String和StringBuffer主要有2个区别:(1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringBuffer类对象为可修改对象,可以通过append()方法来修改值(2)String类对象的性能远不如...
分类:
其他好文 时间:
2015-12-23 10:40:56
阅读次数:
137
主要概念:可见性、重排序、失效数据、最低安全性、发布、逸出、线程封闭(Ad-hoc、栈封闭、ThreadLocal类)、不变性、Final域、事实不可变对象、1、在没有同步的情况下,编译器、处理器以及运行时等都可能对操作的执行顺序进行一些意想不到的调整。在缺乏足够同步的多线程程序中,要想对内存操作的...
分类:
编程语言 时间:
2015-12-15 06:20:51
阅读次数:
306
一、元组tuple特性1、有序集合2、通过偏移来取数据3、不可变对象,不能在原地修改内存,没有排序、修改等操作元组不可变的好处:保证数据的安全,比如我们传给一个不熟悉的方法,确保不会改变我们的数据从而导致程序问题。二、集合:集合是没有顺序的概念,所以不能用切片和索引操作1、创建集合:可变的set()...
分类:
编程语言 时间:
2015-12-11 23:54:30
阅读次数:
170
1.什么是不可变对象? 众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。 不能改变状态的意思是:不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型...
分类:
编程语言 时间:
2015-12-06 20:51:05
阅读次数:
259
1. 不要使用可变对象作为函数默认值代码如下:In [1]: def append_to_list(value, def_list=[]): ...: def_list.append(value) ...: return def_list ...: In ...
分类:
编程语言 时间:
2015-12-04 10:40:44
阅读次数:
249
常见错误1:在函数参数中乱用表达式作为默认值Python允许给一个函数的某个参数设置默认值以使该参数成为一个可选参数。尽管这是这门语言很棒的一个功能,但是这当这个默认值是可变对象(mutable)时,那就有些麻烦了。例如,看下面这个Python函数定义:123>>> def foo(bar=[]):...
分类:
编程语言 时间:
2015-11-28 11:53:58
阅读次数:
237