用引用操纵对象
一切都被视为对象。因此可采用单一固定的语法。
尽管一切都看作对象,但操纵的标识符实际是对象的一个“引用”(reference)。
可以将这一情形想象成遥控器(引用)来操纵电视机(对象)。只要握住这个遥控器,就能保持与电视机的连接。
当有人想改变频道或者减小音量时,实际操控的是遥控器(引用),再由遥控器来调控电视机(对象)。如果想再房间里四处走走。同时仍能遥控电视机,那么只需携带遥控器(引用)而不是电视机(对象)。
此外,即使没有电视机,遥控器也可独立存在。也就是说,你拥有一个引用,并不一定需要有一个对象与它关联。
例如:
String s;
这里所创建的只是一个String引用,并不是对象。
异常处理
异常情形(exceptional condition)是指阻止当前方法或作用域继续执行的问题。
把异常情形与普通问题相区分很重要。
所谓的普通问题是指,在当前环境下能得到足够的信息,总能处理这个错误。
而对于异常情形,不能继续下去,因为在当前环境下无法获得必要的信息来解决问题,你所能做的就是从当前环境跳出,并且把问题提交给上一级环境,这就是抛出异常时所发生的事情。
并发
并发可以提高运行在单处理器上的程序的性能。
阻塞:如果程序中的某个任务因为该程序控制范围之外的某些条件(通常是I/O)而导致不能继续执行,那么我们就说这个任务或者线程阻塞了。如果没有并发,整个程序都将停下来,直至外部条件发生变化。
this 关键词
同一个类型的两个对象,分别是a和b。a、b都调用peel()方法。如果只有一个peel()方法,它如何知道是被a还是被b调用的? Banana a = new Banana(); Banana b = new Banana(); a.peel(1); b.peel(2); 实际上,编译器做了一些幕后工作。它暗自把“所操作对象的引用”作为第一个参数传递给了peel()。所以上述两个方法的调用就变成了: Banana.peel(a, 1); Banana.peel(b, 2); 这是内部的形式,代码可千万不能这么写!
this关键词只能在方法内部使用,表示对“调用方法的那个对象”的引用。 在方法内部调用同一个类的另一个其他方法,不必要写this。 this关键字对于将当前对象传递给其他方法也很有用: Class Apple{ Apple getPeeled(){ return Peeler.peel(this); } }