第1章:Java语言的面向对象编程
其它基础的跳过,在第1章里有些是以前少用的,列一列:
标志输入:单词和数字
StreamTokenizer类,在文本中提取各种标志;共有四种类型标志:TT_EOF(文件尾),TT_EOL(行尾),TT_WORD和TT_NUMBER;
可能用输入流多了,这个东西反而少用,性能上有点差距;
示例:
oid readTokens(String fInName) throws IOException {
StreamTokenizer fIn = new StreamTokenizer(new BufferedReader(
new FileReader(fInName)));
fIn.nextToken();
String s;
while (fIn.ttype != StreamTokenizer.TT_EOF) {
if (fIn.ttype == StreamTokenizer.TT_WORD) {
s = "word";
} else if (fIn.ttype == StreamTokenizer.TT_NUMBER) {
s = "number";
} else
s = "other";
System.out.println(s + ":\t" + fIn);
fIn.nextToken();//跳过分隔标志的空白字符;
}
}
当文本文件是由以空白字符分隔的单词和数字组成时
示例:
void readTokens2(String fInName) throws IOException {
BufferedReader fIn = new BufferedReader(new FileReader(fInName));
String s;
while ((s = fIn.readLine()) != null) {
java.util.StringTokenizer line = new java.util.StringTokenizer(s);
while (line.hasMoreTokens()) {
System.out.println(line.nextToken());
}
fIn.close();
}
}
Java和指针
在JAVA中,换个说法reference(引用)
为什么要换成这样呢,是为了消除指针某些对程序有害的行为(不是说指针没用)
在JAVA中不可能有一个非空引用变量对不存在的对象进行访问。引用变量如果非空,就总是会指向某个对象,因为编程者不能删除被变量引用的对象。在Pascal中可以使用函数dispose(),C++中可以使用delete删除一个对象。使用这两种方法是为了将无用对象占据的内存空间返还内存管理器,如果不将这些变量设为空或是程序中其他可访问的对象地址,就会出现所谓的虚引用的问题(dangling reference problem),这会导致程序崩溃。JAVA里是不会发生虚引用的问题的;因为有自动回收器;
Vector
这个就不说了,查查API就OK了,记得他是一个非线程安全的类,说是遗留类,但有时还是有用的;
第2章 复杂性分析