Thinking in Java读书笔记(9-13章)

来源:转载


第九章.接口
1、抽象类:一个类包含抽象方法,这个类必须声明为抽象类。如果一个类继承抽象类那么就必须为每一个抽象方法提供方法定义,否则这个新类也必须声明为抽象类。不能为

2、接口:创建接口时可以在接口前面加public,如果不加则这个接口只具有包访问权限,接口内部方法默认都是public的,

3、使用接口的原因:能够向上转型为多种基本类型,防止客户端程序创建该类的对象。

4、当一个类继承父类包含有接口里面的方法时不需要实现相同的方法。

5、组合接口可以很容易在接口中添加新的方法名,但是在继承的多个接口中最好不要使用相同的方法名。这回造成程序代码可读性差。

6、接口中的域是static和final的。而且不能是"空final",但是可以被常量表达式初始化。这些域不是接口的一部分,他们的值被存储在该接口的静态存储区域内。


第十章.内部类
1、内部类是一种名字隐藏,在非static时当生成一个内部类对象时,此对象和他的外围对象之间就有了一种联系,它能够访问外围对象的所有成员(包括private)而不需要任何特殊条件。

2、使用.this与使用.new
非static如果需要在内部类中生存对外部对象的引用 可以采用DotThis.this这种方式。如果需要创建某个内部类的对象可以采用外部类.new 内部类构造方法的方式获得。如dn.new Inner();也就是说内部类的创建必须依赖于外部类的
对象。静态内部类的创建不需要外部类的引用。

3、当一个内部类被定义为private时,在它的外部类之外是无法使用的。

4、局部内部类:定义在方法内部的类。

5、匿名内部类:它可以扩展有非默认构造器的类,可以对字段进行初始化,可以通过实例初始化构造器。

6、普通内部类对象隐式地保存了一个指向创建它的外部类的对象。静态内部类通常称为嵌套类,它的对象创建并不需要依赖与外部类对象,而且不能从嵌套类的对象中访问非静态的外围类对象。


第十一章.持有对象
1、集合框架简单描述
List:按照插入的顺序保存元素,可以有重复元素
Set:不能有重复元素
Queue:按照排队规则来确定对象产生的顺序,通常情况下是与插入顺序相同
Map:一组键值对对象,允许通过键来查找值。他也被称为“关联数组”、“字典”。

2、Arrays.asList(),Collections.addall(),Collection.addAll()
前两个更灵活,可以接受可变参数,而最后一个只能接受Collection对象作为参数。

3、ListIterator
ListIterator是一个更加强大的Iterator子类型,它只能用于List类型数据的访问,它可以向前向后移动,可以通过List.ListIterator()产生一个指向list起始位置的ListIterator 也可以通过调用List.ListIterator(n)产生指向n的ListIterator。

4、LinkedList
因为是链表结构数据插入移除比较快,随机访问比较慢。

5、foreach语句可以用于数组或其他任何Iterable。

第十二章.异常处理

1、异常处理过程:
首先系统会在堆上面创建一个异常对象,然后是当前执行路径被终止并且从当前环境中弹出对异常对象的引用,此时异常处理机制接管程序并寻找异常处理程序然后冲错误状态恢复,程序换一种方式执行或者继续运行下去。

2、异常处理理论上有两种基本模型:终止模型和恢复模型,终止模型无法回到出现异常的程序,恢复模型可以重新回到程序继续执行。

3、重新抛出异常:抛出异常同一try块的后续catch子句将被忽略,异常的所有信息都会得以保存。

4、异常链:经常会在捕获一个异常之后抛出一个异常并且希望把原始异常信息保存下来,这样可以将异常传入抛出异常的构造函数。

5、RuntimeException
编译器并没有在编译时对运行时异常进行强制检查,java发现出现RuntimeException时会进行自动抛出异常。所以在抛出RuntimeException时是不需要进行捕获的。因此只能在代码中忽略RuntimeException异常及其子类异常,
RuntimeException代表的是无法预料的错误,应该程序员进行仔细检查的错误。

6、当覆盖方法的时候,只能抛出在其基类方法的异常说明里面列出的那些异常。

7、finally的作用是可以对一些资源进行关闭和回收,如文件的关闭、网络连接、jdbc连接的关闭。


第十三章.字符串
1、String对象是不可变的,String类每一个会返回String值的方法都是新建了一个String对象,如果返回的String值与原对象一样,则会拷贝一份引用返回这样可以节省存储空间。

2、格式化输出:Java SE5之后推出了格式化输出功能,System.out.formart()可以用于PrintStream与PrintWriter对象。
在java中所有新的格式化功能都是由java.util.Formatter类处理。

3、正则表达式:
正则表达式是一种强大而灵活的文本处理工具,使用正则表达式可以能够以编程的方式构造复杂的文本模式,并对输入的字符串进行搜索。可以用正则表达式来做的事情分别有:匹配、选择、编辑以及验证。
贪婪模型:量词总是贪婪的,除非有其他的选项被设置,贪婪表达式会为所有可能的模式发现尽可能多的匹配。
组:组使用括号划分的正则表达式,可以根据组的编号来引用某个组,组号为0表示整个表达式,组号为1表示第一对括号括起来的组,依次类推。

4、Scanner
Java SE5新增了Scanner类,它可以大大减轻少莫敖输入的工作负担。Scanner的构造器可以接受任何类型的输入对象,包括File对象、InputStream、String等。



分享给朋友:
您可能感兴趣的文章:
随机阅读: