可变性:指一个对象的值是否可改变。所有Python对象都有三个属性:类型、标识符、值,三个属性几乎总是只读的,在对象的生命周期内它们是不可变的。唯一例外的是对象的值,如果值可变则是可变对象,值不可变就是不可变对象。不可变对象传值,可变对象传引用简单的类型或者“标量”类型,包括整数和其他数字类型,st...
分类:
编程语言 时间:
2014-11-09 13:53:32
阅读次数:
252
在面试中经常遇到这样的问题:1、什么是不可变对象。不可变对象有什么好处。在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型?1、不可变对象,顾名思义就是创建后的对象不可以改变,典型的例子有java中的String类型。2、相比于可变对象,不可变对象有很多优势: (....
分类:
编程语言 时间:
2014-11-04 16:32:17
阅读次数:
400
浅拷贝:java Ojbect类提供的clone只是拷贝本对象,其对象内部的数组和引用对象等都不拷贝,还是指向原生对象的内部元素地址。类引用的成员变量必须满足两个条件才不会被拷贝:1.是类的成员变量而不是方法内变量;2必须是一个可变的引用对象,而不是一个原始类型或者不可变对象(包括int、long、...
分类:
编程语言 时间:
2014-10-26 18:23:03
阅读次数:
224
【问题1】什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具体一些,Java的String类为什么要设成immutable类型?
答:从String类的源码中,我们可以知道不可变对象是被final关键字修饰的类产生的对象,其成员变量也是被final修饰的,因此该类不能被修改也不能被继承。
不可变对象的好处主要体现在以下两方面:
1. 不可变对象是线程安全的,可用于多线程。在多线程通信中,某一个变量很可能被多个线程进行修改,因此是不安全的。而不可变对象不能...
分类:
编程语言 时间:
2014-10-18 22:25:04
阅读次数:
243
满足同步需求的另一种方法是使用不可变对象(Immutable Object)。到目前为止,我们介绍了许多与原子性和可见性相关的问题,例如得到失效数据,丢失更新操作或光查到某个对象处于不一致的状态等等,都与多线程视图同时访问同一个可变的状态相关。如果对象的状态不会改变,那么这些问题与复杂性也就自然消失了。
如果某个对象在被创建后其状态就不能被修改,那么这个对象就被成为不可变对象。线程安全型是不可变对象的固有属性之一,他们的不变性条件是由构造函数创建的,只要他们的状态不改变,那么这些不变性条件就...
分类:
编程语言 时间:
2014-10-12 23:49:08
阅读次数:
326
今天来个简单的题目,轻松一下:) 相信很多人对这个问题都不陌生,只要是个Java程序员,肯定就用过这几个类: 1、String是个不可变对象,这就意味着每次字符串拼接都是创建了新的实例 2、StringBuilder和StringB...
分类:
编程语言 时间:
2014-09-25 14:32:49
阅读次数:
251
Python学习字典1)字典的了解1.字典是python中唯一的映射类型(哈希表)2.字典对象时可变的,但是字典的键必须使用不可变对象,并且在一个字典中可以使用不同的类型的键值。3.keys()或者是values()返回列表中或者值列表4.items()返回包含键值对应的元祖1)定义字典的方法和..
分类:
编程语言 时间:
2014-09-10 19:42:11
阅读次数:
262
这篇记录一下保证并发安全性的策略之——不变性。下面是一段音乐,歌名是——不可变对象^^将一连串行为组织为一个原子操作以保证不变性条件,或者使用同步机制保证可见性,以防止读到失效数据或者对象变为不一致状态,这些问题都是因为共享了可变的数据。如果我们能保证数据不..
分类:
其他好文 时间:
2014-09-08 11:00:57
阅读次数:
583
字典:pytho中唯一映射类型,无序列表(哈希表)对象是可变的,但字典的键必须使用不可变对象,并且一个字典中可以使用不同类型的键值定义方法:-{}如:dic={name:‘zzc‘,age:19,gender:‘man‘}-使用工厂方法dict()列fdict=dice([‘x‘,1],[‘y‘,2])-内建方法:fromkeys()字典..
分类:
编程语言 时间:
2014-09-05 18:28:42
阅读次数:
253
1.4.2 理解使用不可变性的代码
在前面介绍函数式风格的好处时,我们讨论过不可变性(immutability)。我们使用的示例是一个带边框的椭圆,但是代码的具体行为并不清楚。当我们用不可变对象重写了代码以后,它就变得更容易理解。在后面的章节中,我们会回到这个主题并更详细地讨论。此示例的目的是显示在实践中不可变的对象的表现。
再次强调,如果你在此时没能全部掌握,也不要担心。想象一下,我们...
分类:
其他好文 时间:
2014-07-26 15:01:26
阅读次数:
151