您的位置:首页 > 编程语言 > Java开发

20145325张梓靖 《Java程序设计》第5周学习总结

2016-04-03 23:26 274 查看

20145325张梓靖 《Java程序设计》第5周学习总结

教材学习内容总结

try catch Java中所有错误都会被打包为对象。如果某个方法声明会抛出
Throwable
或子类实例,只有不是属于Error ,java.lang.RuntimeException 或其子类实例,就必须明确使用 try、 catch 语法加以处理,或者用 Throws 声明这个方法会抛出异常,否则编译失败。

异常继承架构 错误会被包装为对象,这些对象都是可抛的。设计错误对象都继承自
java.lang.Throwable
类。受检异常,
java.lang.Exception
及其子类(但非属于 RuntimeException ),API客户端必须明确处理错误;非受检异常:
java.lang.Error
,编译程序不强迫API客户端在语法上进行处理。

规则表示式 String的matches()方法设定\d*,用于检查字符串中的字符是不是数字,是则返回ture。

注意点 若父类异常对象在子类异常对象前被catch,那么catch子类异常对象的区块将永远不会被执行 ;注意catch括号中列出的异常不得有继承关系,否则编译错误(多重捕捉语法)。

throw 如果是受检异常,则必须在方法上使用 throws 声明;如果是非受检异常,则可不使用 throws 声明。

自定义异常类别 通常建议继承自 Exception 或其子类,如果不是继承自 Error 或 RuntimeException,那么就会说受检异常。

堆栈追踪 为得知异常发生的根源,以及多重方法调用下异常的堆栈传播,可以利用异常对象自动收集的堆栈追踪;直接调用异常对象的
printStackTrace()
; 取得个别的堆栈追踪元素进行处理可使用
getStackTrace()
,返回
StackTraceElement
数组。

assert 程序执行的某个时间或某种情况下,必然处于或不处于何种状态下,这是钟断言;启动断言检查,执行java指令时,指定-enableassertions或-ea自变量。

finally 无论try区块中有无发生异常,finally区块一定会被执行。

自动尝试关闭资源 想要尝试自动关闭资源的的对象,是撰写在try之后的括号中,如果无须catch处理任何异常,可以不用撰写,也不用撰写finally自行尝试关闭资源。

java.lang.AutoCloseable 只要操作
AutoCloseable
接口,就可以套用至尝试关闭资源语法,可以同时关闭两个以上的资源对象,中间以分号分隔;try括号中越后面撰写的对象会越早被关闭。

Collection
java.util.List
接口中,记录每个对象的索引顺序,并可依照索引取回对象;
java.util.Set
接口中,收集的对象不重复,具有集合的行为;
java.util.Queue
接口中,收集对象时以队列方式,收集的对象加入至尾端,取得对象时从前端;
java.util.Deque
接口中,对 Queue 的两端进行加入、移除等操作。

Set 在收集过程中若有相同的对象,则不再重复收集;HashSet的操作概念是,在内存中开设空间,每个空间会有个哈希编码;Java 中许多要判断对象是否重复时,都会调用
hashCode()
equals()
方法。

Queue Queue继承自Collection,所以也具有Collection的add()、remove()、element()等方法,然而Queue定义了自己的offer()、poll()与peek()等方法,最主要的差别之一在于:add()、remove()、element()等方法操作失败时会抛出异常,而offer()、poll()与peek()等方法操作失败时会返回特定值。

使用泛型 用“<>” 写明类型,如果没有指定,则就会回归为使用 Object 类型;声明参考时有指定类型,创建对象时就不用再写类型了。

Lambda
Request request = ()-> out.ptinf("", );
相对于匿名类语法,省略了接口方法和方法名称,->左边是参数列,右边是方法本体。

Interable 与 Iterator iterator() 方法:返回
java.util.Iterator
接口的操作对象,包括了 Collection 收集的所有对象,利用 iterator() 的 hasNext() 看看有无下一对象,用iterator() 的 next取得下一对象。

Comparable 与 Comparator Collections的Sort()方法在取得a对象与b对象进行比较时,会先将a对象扮演为Comparale,然后调用
a.compareTo(b)
,a对象顺序小于b对象返回小于0的值,相等返回0,大于返回大于0的值;
java.util.Arrays
的Sort()方法,针对对象排序有两种版本:收集在数组中的数据必须是Comparable,或者可以传入Comparator指定排序方式;
reverseOder()
返回的Comparator会是Comparable对象上定义顺序的反序,
nullsFirst()
接受Comparator在其定义顺序上加上让null排在最前面的规则。

Map 根据某个键(Key)来取得对应的值( Value),Map 也支持泛型;
HashMap
,建立键值,使用put()方法,指定键取回对应的值,使用get()方法;
TreeMap
,如果建立键值对应,则键的部分会排序,作为键的对象必须操作Comparable接口,或者在创建TreeeMap时指定操作Comparator接口的对象;
Properties
,setProperty()指定字符串类型的键值,getProperty()指定字符串类型的键,取回字符串类型的值。

访问Map键值 想取得Map所有的键,可以调用Map的KeySet()返回Set对象,取得map中所有的值,可以使用values()返回Collection对象。

教材学习中的问题和解决过程

问题 书中代码有很多小细节现在都无法清楚的理解

解决过程 重新、多敲几遍代码,使用API 理解,询问别人,尽量理解。

代码调试中的问题和解决过程

问题 在做P301,引发的问题

解决过程

如何用Set表示不重复的数据(下题为例,应输出 2):

1.假设 Student 就只有一个变量,按照练习题的结构编写代码。





结果不是所想的。

2.用类似 9.1.3 WordCount的
new HsahSet(Array.asList(tokens));
方法,定义 Set时,指定 Student 类型。






不对。

3.定义 Set时,指定 String 类型。





为什么 size 会为1?但后显示的结果是对的。

4.直接定义 String类型。





结果是对的,说明String 类型,可直接用Set 来达到收集的对象不重复。

5.换钟方式得出结果:重新定义 equals 、hashCode,不重新定义 toString。







size 对的,但后面显示的内容代表什么?

6.重新定义 equals 、hashCode,重新定义 toString。





是所想要的答案,说明String.format 能返回输出字符串。

代码托管



学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标3500行28篇300小时
第一周150/1501/120/20
第二周100/2501/222/42
第三周150/4002/421/63
第四周1000/14001/527/90
第五周300/17001/622/102

参考资料

Java学习笔记(第8版)

《Java学习笔记(第8版)》学习指导

...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: