如何使用Arrays类中的静态方法对数组进行填充、比较、排序和搜索。
如何使用Observable类和Observer接口进行对象间通信
Random类提供的便利工具有哪些。
如何创建并使用Data对象和Calendar对象。
什么是正则表达式,以及如何创建并使用它们。
Scanner类具有什么功能以及如何使用它。
15.1数组的工具方法
15.1填充数组
long[] values = new long[1000];
java.util.Arrays.fill(values, 888L); //每个元素填充为888
Person[] people = new Person[100];
java.util.Arrays.fill(people, new Person("John", "Doe")); // 这里只创建了一个Person对象,所有数组元素都引用该对象。
Person[] people = new Person[100];
java.util.Arrays.fill(people, 0, 50, new Person("John", "Doe"));
java.util.Arrays.fill(people, 50,100, new Person("John", "Doe")); //把前50个元素设置为引用一个Person对象,把后50个元素设置引用另一个Person对象。
15.1.2比较数组
boolean equals(type[] array1, type[] array2);
如果两个数组包含相同数目的元素且这两个数组中所有对应元素都相等,则返回true.
如果array1和array2都为null,返回true
0.0与-0.0相等
NaN与NaN相等
元素为类类型时,元素比较通过调用类的equals()方法实现。如果没有实现,将使用Object类的版本,这个比较的是引用,而不是对象,只有当两个对象引用均指向同一个对象时才返回true.
15.1.3对数组排序
void sort(type[] array)
void sort(type[] array, int fromIndex, int toIndex)
如果是类类型
15.1.4搜索数组
15.2 Observable对象和Observer对象
Observable类提供了一种有趣的机制,这种机制可以把一个类对象中的更改传达给许多其他的类对象。
这种机制的一种用途就是文档/视图结构,当文档对象发生改变时,需要告知它的视图。
视图对象显示文档数据的各个方面,视图通常是由文档对象持有的。
文档是可观察的(observable),而所有视图都是观察者(observer)。这恰恰是Observable类与Observer接口联合使用时所要达到的目的。
文档/视图结构所描绘的是一个多对多的关系。
15.2.1 定义可观察对象的类
public class Document extends Observable{}
public class View implements Observer{
public void update(Observable theObservableObject, Object arg){}
}
15.2.2 Observable类的方法
addObserver(Observer o)
deleteObserver(Observer o)
deleteObservers()
notifyObserver(Object arg)
notifyObservers()
countObservers()
setChanged()
hasChanged()
clearChanged()
为了将一个观察者连接到一个Observable对象,这个Observer对象必须调用Observable对象的addObserver()方法来向Observable对象注册。