什么是不可变对象? 众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其 ...
分类:
编程语言 时间:
2016-09-22 14:40:51
阅读次数:
263
31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 "Hell ...
分类:
编程语言 时间:
2016-09-18 15:12:42
阅读次数:
271
在VC中写程序都习惯了,一般数组作为函数实参时,最常用的方法就是引用和指针的方法,但是到C语言中就没有引用了,还有一种比较常用的方法: #include <stdio.h>void sort(int array[],int n){int i,j,k,t;for(i=0;i<n-1;i++){k=i; ...
分类:
编程语言 时间:
2016-09-15 19:18:21
阅读次数:
185
一、函数的定义和使用 1、基本结构: 2、函数名: 和变量名命名规则一致,最好不要与内置函数名相同 3、参数: 和C/C++不同,参数无需指定类型,直接交由解释器去判断: 对于number, str, tuple等不可变的对象,相当于传值,即是传递了拷贝 对于list,dict,set等可变对象,相 ...
分类:
编程语言 时间:
2016-09-15 12:21:26
阅读次数:
304
回顾: 在定义函数时函数括号中的变量名成为形式参数,简称形参或虚拟参数;在主调函数中调用一个函数时,该函数括号中的参数名称为实际参数,简称实参,实参可以是常量、变量或表达式。 注意: 1、C语言中实参和形参之间的额数据传递是单向的“值传递”,单向传递,只能由实参传给形参,反之不能。 2、被调用函数的 ...
分类:
其他好文 时间:
2016-09-12 18:33:36
阅读次数:
207
简单来说,若对象a中存的是列表或字典等可变对象,b对a的浅拷贝只是对对象第一层的复制,修改b第二层的元素仍然会影响两个对象。 深拷贝则是不会影响原来的对象。 import copy.copy() 浅拷贝 copy.deepcopy() 深拷贝 赋值操作更像是一个引用,新的赋值会创建一个新的内存地址, ...
分类:
编程语言 时间:
2016-09-06 12:09:56
阅读次数:
162
维基百科上的定义:在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。 所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。 ...
分类:
编程语言 时间:
2016-09-06 10:23:40
阅读次数:
193
今天看数据结构的时候,因为是c语言版的,刚开始学的时候就对指针搞的焦头烂额,今天,发现参数传递的时候,&符号也莫名其妙,搜了一篇好文,转载下来。 一、 函数参数传递机制的基本理论 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两 ...
分类:
编程语言 时间:
2016-09-01 13:07:06
阅读次数:
229
在讲函数参数之前还是简单的讲一下Python中的可变对象与不可变对象。一、可变对象与不可变对象在Python中,一切皆对象,python中不存在所谓的传值调用,一切传递的都是对象的引用,也可以认为是传址。所谓可变对象是指,对象的内容可变,而不可变对象是指对象内容不可变(即在..
分类:
编程语言 时间:
2016-08-24 01:16:19
阅读次数:
227
1、设计类的时候,应充分运用属性来封装数据。 2、应该尽量把对外公布出来的属性设为只读,而且只在确有必要时才将属性对外公布。 3、若属性仅可于对象内部修改,则在“class-continuation分类”中将其由readonly属性扩展为readwrite属性。 这种做法下,如果该属性是nonato ...
分类:
其他好文 时间:
2016-08-09 19:08:49
阅读次数:
107