这一章节我们来讨论一下参数与共享引用
承接上一章节所说的参数的传递是通过自动将对象赋值给本地变量名来实现的,其本质就是复制引用,传递对象
1.我们下面以传递不可变对象为例子:
>>> b=1
>>> def test(x):
print(x)
print(id(x))
x=2
print(x)
print(id(x))
>>> test(b)
1
497734096
2
...
分类:
编程语言 时间:
2015-09-16 09:47:40
阅读次数:
205
HashMap的key能是对象吗?key能是可变对象吗?当key是可变对象是会带来什么问题???
分类:
其他好文 时间:
2015-09-15 18:06:44
阅读次数:
130
1.多目标赋值
>>> a=b=c='abc'
>>> a,b,c
('abc', 'abc', 'abc')
>>>
2.多目标赋值与共享引用
对于不可变对象是没有问题,但是对于可变对象,这里就有问题的了
>>> a=1
>>> b=a
>>> b=a+1
>>> id(a)
505991632
>>> id(b)
505991648
>>>
上面的例子...
分类:
编程语言 时间:
2015-08-31 23:47:16
阅读次数:
191
列表是python里面最具灵活性的有序集合对象类型
它可以包含其他任何类型的对象:数字、字符串、甚至是列表
特点:可变对象、可在原处修改、可通过偏移值、分片、方法调用
特性:
1.任意对象的有序集合
2.通过偏移读取
3.可变长度、异构和任意嵌套
4.属于可变序列
5.对象引用数组:列表包含0个或者多个对象的引用
操作
解释
L=[]
一个空...
分类:
编程语言 时间:
2015-08-27 23:00:36
阅读次数:
261
在之前的文章 http://www.cnblogs.com/bitpeng/p/4748148.html 中,大家看到了ret.append(path) 和ret.append(path[:])的巨大差别。这和Python的对象机制有关。现在谈谈这个问题!我们知道,Python有可变对象和不可变对象...
分类:
编程语言 时间:
2015-08-21 19:13:22
阅读次数:
263
【JavaSE】day01_ API文档 、 字符串基本操作
--20150820
1.String及其常用API
1)java中String对象为不可变对象,一旦在内存中创建,内容不能发生变化,若要对字符串内容改变,那么就会创建新对象。这样做的目的是可以最大程度的重用相同内容的字符串以减小系统资源的开销。
2)String常量池
当我们通过字面量,常量来初始化一个字...
分类:
编程语言 时间:
2015-08-20 22:35:20
阅读次数:
318
下面这个”并发技巧清单“列举了在第一部分(二至五章)中介绍的主要概念和规则。
可变状态是至关重要的(It’s the mutable state,stupid)。
所有的并发问题都可以归结为如何协调对并发状态的访问。可变状态越少,就越容易确保线程安全性。
尽量将域声明为final类型,除非需要它们是可变的。
不可变对象一定是线程安全的。
不可变对象能极大地降低并发编程的复杂性。它们更为简单而且安...
分类:
编程语言 时间:
2015-08-17 19:32:35
阅读次数:
152
String在Java中是一个类类型(非主类型),是一个不可被继承的final类,而且字符串对象是一个不可变对象。声明的String对象应该被分配到堆中,声明的变量名应该持有的是String对象的引用。运行期计算得到的字符串会得到一个新的字符串。tag="hel"+tag;这种现象是Java为了效率...
分类:
编程语言 时间:
2015-08-16 18:04:24
阅读次数:
136
OC内部:可变对象和不可变对象的深(复制)拷贝问题思考:不可变对象:例如NSString对象,因为NSString对象是常量字符串,所以,不可以更改其内容,但是可以修改指向该字符串的指针指向。当对NSString对象做深拷贝时,如果是copy复制方式,其实就是浅复制,只是复制了同一个对象的指针;如果...
分类:
其他好文 时间:
2015-08-15 21:26:06
阅读次数:
2143
引用计数和字符串 内存中的常量字符串的空间分配与其他对象不同,他们没有引用计数机制 凡是自定义的对象都有引用计数机制; OC内部中对象分为可变对象(NSMutableString等)和不可变对象(NSString、NSArray等),不可变对象不适用于引用计数的机制,可变的对象适用引用计数机制。 ....
分类:
其他好文 时间:
2015-08-13 19:31:10
阅读次数:
129