一、元组
元组(tuple)跟列表很像,使用()包裹元素,是一种不可变的类型。
元组内部可以放置各种数据,不能进行增、减、改操作,只可以查看和删除。这里就要说到不可变的类型,一共有三种:数字、字符串、元组。其中数字和字符串都是标量类型,而元组是一个容器,它其中可以放入很多类型的元素。
但是元组可以扩充,使用+
aTuple = ("one", "two", "three")
aTuple ...
分类:
编程语言 时间:
2014-11-10 15:30:36
阅读次数:
288
指针存储的是内存地址,引用是内存的别名。 指针传递参数的本质是值传递,引用的任何操作都处理成间接寻址 ★相同点: ●都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。 ★不同点: ●指针是一个实体,而引用仅是个别名; ●引用只能在定义时被初始化一次,之后不可变;...
分类:
其他好文 时间:
2014-11-09 15:04:43
阅读次数:
142
可变性:指一个对象的值是否可改变。所有Python对象都有三个属性:类型、标识符、值,三个属性几乎总是只读的,在对象的生命周期内它们是不可变的。唯一例外的是对象的值,如果值可变则是可变对象,值不可变就是不可变对象。不可变对象传值,可变对象传引用简单的类型或者“标量”类型,包括整数和其他数字类型,st...
分类:
编程语言 时间:
2014-11-09 13:53:32
阅读次数:
252
注:列表是不可变的,不能通过赋值改变列表的元素 列表具有递归结构,数组是连续的 scala里的列表类型是协变的? -->scala中的逆变与协变
分类:
其他好文 时间:
2014-11-07 18:42:49
阅读次数:
103
1.字典
不允许一个键对应多个值:当有键发生冲突(即,字典键重复赋值),取最后(最近)的赋值。
>>> dict1 = {' foo':789, 'foo': 'xyz'}
>>> dict1
{'foo': 'xyz'}
2.集合分为可变集合(set) 和 不可变集合(frozenset)...
分类:
编程语言 时间:
2014-11-07 09:58:24
阅读次数:
139
先看一个小程序
主函数的输出并没有像想像中一样会输出3,而是输出初始化的数值0
这是因为与String类似,所有的包装类都是final类,即不可变类。虽然在代码A处看起来是改变了counter的值,但实际上是创建了另一个对象,并将方法内的counter参数的引用指向了这个新创建的对象,由于是不同的引用,所以不会对方法外的引用有任何的影响。内存图如下所示:
在刚...
分类:
其他好文 时间:
2014-11-05 09:20:28
阅读次数:
209
在面试中经常遇到这样的问题:1、什么是不可变对象。不可变对象有什么好处。在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型?1、不可变对象,顾名思义就是创建后的对象不可以改变,典型的例子有java中的String类型。2、相比于可变对象,不可变对象有很多优势: (....
分类:
编程语言 时间:
2014-11-04 16:32:17
阅读次数:
400
不可变类的实例的状态不会变化,这样的实例可以安全的被其他与之关联的对象共享,还可以安全的被多个线程共享。 为了节省内存空间, 优化程序的性能, 应该尽可能的重用不可变类的实例,避免重复创建具有相同属性...
分类:
编程语言 时间:
2014-11-03 17:54:56
阅读次数:
253
final成员变量 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变,但引用变量所指...
分类:
编程语言 时间:
2014-11-03 14:44:47
阅读次数:
237
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) ?简 要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 ...
分类:
其他好文 时间:
2014-10-31 16:08:21
阅读次数:
118