在面试中经常遇到这样的问题:1、什么是不可变对象。不可变对象有什么好处。在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型?1、不可变对象,顾名思义就是创建后的对象不可以改变,典型的例子有java中的String类型。2、相比于可变对象,不可变对象有很多优势: (....
分类:
编程语言 时间:
2014-11-04 16:32:17
阅读次数:
400
主要内容:函数参数传递、声明等细节
#include
int ff(); // 1、当函数参数列表中没有char、short、float类型时(即限于int、double类型可以省略),函数声明中可以省略参数类型说明,
//但是定义中不能省略参数类型
// 2、声明时可以省略参数名字,如int ff(int); 只说明类型
int m...
分类:
编程语言 时间:
2014-11-04 15:06:56
阅读次数:
183
1. 函数
shell的函数(function),用于自定义一段程序段。用于简化代码。
shell是自上而下,由左而右执行的。
所以函数的定义需要在调用的前面。
2.函数参数传递
function也拥有内置变量,与shell script类似。
$# 参数个数
$1 第一个参数
$2 第二个参数...
分类:
系统相关 时间:
2014-11-01 13:32:02
阅读次数:
202
浅拷贝:java Ojbect类提供的clone只是拷贝本对象,其对象内部的数组和引用对象等都不拷贝,还是指向原生对象的内部元素地址。类引用的成员变量必须满足两个条件才不会被拷贝:1.是类的成员变量而不是方法内变量;2必须是一个可变的引用对象,而不是一个原始类型或者不可变对象(包括int、long、...
分类:
编程语言 时间:
2014-10-26 18:23:03
阅读次数:
224
set的特点set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。最后,set存储的元素也是没有顺序的。set的这些特点,可以应用在哪些地方呢?星期一到星期...
分类:
编程语言 时间:
2014-10-23 14:20:57
阅读次数:
168
clone()是java.lang.Object类下面的一个很难处理的方法,clone()的作用很简单,提供一种克隆机制创建对象的副本,对于如何实现它已成为一个棘手的事,同时还长期被广受批评。不管怎样,我们不去争论历史,现在我们将尝试学习clone方法是怎样工作的。说实在的,想理解克隆机制并不简单,甚至有经验的java程序员也很难解释可变对象的克隆是如何运作的、深克隆(deep copy)与浅克隆...
分类:
其他好文 时间:
2014-10-22 16:04:14
阅读次数:
361
【问题1】什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具体一些,Java的String类为什么要设成immutable类型?
答:从String类的源码中,我们可以知道不可变对象是被final关键字修饰的类产生的对象,其成员变量也是被final修饰的,因此该类不能被修改也不能被继承。
不可变对象的好处主要体现在以下两方面:
1. 不可变对象是线程安全的,可用于多线程。在多线程通信中,某一个变量很可能被多个线程进行修改,因此是不安全的。而不可变对象不能...
分类:
编程语言 时间:
2014-10-18 22:25:04
阅读次数:
243
js中的类型:2大类型:原始类型和对象。原始类型有 boolean、number、string这三个普通原始类型,还有null、undefined这俩特殊原始类型对象嘛就多了,普通对象、内置对象、全局对象、函数、数组等。函数参数传递类型:对于原始类型,传递的是值,即复制一份传入函数,在函数内部修改不...
分类:
Web程序 时间:
2014-10-14 17:37:09
阅读次数:
143
满足同步需求的另一种方法是使用不可变对象(Immutable Object)。到目前为止,我们介绍了许多与原子性和可见性相关的问题,例如得到失效数据,丢失更新操作或光查到某个对象处于不一致的状态等等,都与多线程视图同时访问同一个可变的状态相关。如果对象的状态不会改变,那么这些问题与复杂性也就自然消失了。
如果某个对象在被创建后其状态就不能被修改,那么这个对象就被成为不可变对象。线程安全型是不可变对象的固有属性之一,他们的不变性条件是由构造函数创建的,只要他们的状态不改变,那么这些不变性条件就...
分类:
编程语言 时间:
2014-10-12 23:49:08
阅读次数:
326
函数调用的作用:·用实参数向形式参数传递数据;·为获得数据参数及在函数体中声明的变量分配存储空间;·中断现行(调用)函数,把流程向被调用函数的入口处,开始执行被调函数。当参数表为空时,表示该函数不从调用函数接受数据。函数参数传递机制 堆栈存储区是主调函数(过程)和被调用函数(过程)在调用发生时进行通...
分类:
编程语言 时间:
2014-10-11 22:42:56
阅读次数:
332