提到不变性我首先想到的就是String这个类了。 之前学习了很多原子性以及可见性的问题:失效数据,丢失更新操作或者某个对象的状态不一致,都与多线程试图访问同一个可变的相关。 如果对象的状态不会发生改变,那么这些问题与复杂性也就自然消失了。 如果某个对象在被创建之后其状态就不能被改变,那么这个对象就称... ...
分类:
编程语言 时间:
2017-12-09 12:01:35
阅读次数:
170
java 8中新的日期和时间API 使用LocalDate和LocalTime LocalDate的实例是一个不可变对象,它只提供了简单的日期,并不含当天的时间信息.另外,它也不附带任何与时区相关的信息 LocalDate实例提供了多种方法来读取常用的值,比如年份,月份,星期几等 你还可以通过传递一 ...
分类:
编程语言 时间:
2017-12-08 21:03:48
阅读次数:
270
数据类型-字符串 字符串是一个有序的字符的集合,用户存储和表示基本的文本信息,单引号,双引号,三对单引号,三对双引号中间包含的内容称之为字符串单双引号没有区别,一段话的时候用多引号字符串的拼接需要双方都是字符串 特性:1、有序2、不可变 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身 ...
分类:
其他好文 时间:
2017-12-07 17:18:53
阅读次数:
161
copy : copy出来的对象都是不可变对象 不可变字符串: copy == retain == 指针拷贝 不会分配内存 可变字符串: copy = alloc + 内存拷贝 重新分配内存 copy出来的都是不可变对象,所以即使是NSMutableString也不能调用可变对象的方法。强制调用会崩 ...
分类:
其他好文 时间:
2017-12-05 23:15:56
阅读次数:
208
为何说python函数定义默认参数必须指向不可变对象? 以下是个人的理解,如有不对的地方,欢迎讨论 原因分析:函数在定义时就分配了函数和默认参数L所指向对象的内存空间。 1. 如果L指向的是可变对象,函数中更新这个可变对象,那么在多次调用函数,更新的都是函数定义时创建的可变对象, 这个可变对象不会随 ...
分类:
编程语言 时间:
2017-12-05 13:17:41
阅读次数:
170
字符串、整数等都是不可变的,而list是可变的,tuple不可变。dict和set都是可变的 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。 谈谈pop()和remove()2个方法的用法,前者是 ...
分类:
其他好文 时间:
2017-12-02 17:54:47
阅读次数:
130
恢复内容开始 数组list 添加用.append(i,'xxx')方法 删除用.pop(i)方法,其中i为索引位置 数组可以直接作为元素插入数组 元组tuple(初始化后不能改变,所谓不变是指指向的位置不能变) tuple中定义一个元素的时候要加一个逗号用来区分数组与数据赋值 list和tuple是 ...
分类:
编程语言 时间:
2017-12-01 11:48:42
阅读次数:
208
1、a=a+2,表示一个新的对象,新的对象名字还是a,但是指向的内存地址已经变了 所以对于tuple对象(不可变对象),也是可以这样操作的 2、a+=2对于有些对象的操作是表示原来的对象,对有些对象的操作是生成了一个新对象 而list对象,可变对象,+=操作、append操作、extend操作,都是 ...
分类:
编程语言 时间:
2017-11-28 01:21:36
阅读次数:
234
1. 列表和字典,直接赋值,都是浅拷贝,即赋值双方指向同一地址,因为 Python 对可变对象按引用传递。 2. 对非嵌套的列表,使用完全切片[:], 工厂函数 list(),或者 copy.copy() 都是深拷贝。 3. 对于非嵌套的字典,使用工厂函数 dict(),或者 copy.copy() ...
分类:
编程语言 时间:
2017-11-18 11:16:49
阅读次数:
142
```
#coding=utf-8 # dict
dict= {'bob': 40, 'andy': 30}
print dict['bob']
# 通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:
print dict.get('Lisa',666)
#... ...
分类:
编程语言 时间:
2017-11-16 23:51:22
阅读次数:
163