学号20155311 2016-2017-2 《Java程序设计》第5周学习总结
学号20155311 2016-2017-2 《Java程序设计》第5周学习总结
教材学习内容总结
由于我的ios系统出了一些问题,所以git idea jdk我都重新在windows系统上装了一下,这样以后在编代码时遇到的问题解决起来会更方便一些。
第八章
-
8.1 语法与继承构架
-
什么是异常?在 Java 编程语言中,异常类定义程序中可能遇到的轻微的错误条件。可以写代码来处理异常并继续程序执行,而不是让程序中断。
-
Java 提供了一种异常处理模型,它使您能检查异常并进行相应的处理。它实现的是异常处理的抓抛模型。使用此模型,您只需要注意有必要加以处理的异常情况。Java 提供的这种异常处理模型,代替了用返回值或参数机制从方法返回异常码的手段。
-
在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。 Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。
-
Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM出现的问题。
-
使用try...catch
-
JVM会尝试执行try区块中的程序代码,如果发生错误,执行程序就会比对catch括号中声明的类型,是否符合被抛出的错误对象类型,如果是就执行catch中的程序代码。
-
try块 :
try 块由一组可执行语句组成,在执行它们时可能会抛出异常。try 块后可随一个或多个catch块,用来捕获在try中抛出的异常。另一方面,try 不可以跟随在 catch块之后。也就是说:在try语句块中包含可能会产生异常的语句. -
catch块 :
catch 块,从其名称就可以看出,是用来捕获并处理 try中抛出的异常的代码块。没有try 块,catch 块不能单独存在,我们可有多个 catch 块,以捕获不同类型的异常。 -
try{
//可能会出现异常的代码
}
catch(SQLException e){
//处理操纵数据库出现的异常
}
catch(IOException e){
//处理操纵输入流和输出流出现的异常
}
-
若某个方法声明会抛出Thorwable或子类实例,只要不是属于Error或java.lang.RuntimeException,就必须明确使用try、catch语法加一处理,或者在方法中使用throws声明这个方法会抛出异常,否则编译失败
-
认识堆栈追踪
堆栈追踪信息中显示了异常类型,最顶层是异常的根源,但是前提是程序代码中不可有私吞异常的行为、对异常做了不适当的处理,或显示了不正确的信息 -
调用栈机制
如果方法中的一个语句抛出一个没有在相应的 try/catch块中处理的异常, 那么这个异常就被抛出到调用方法中。如果异常也没有在调用方法中被处理,它就被抛出到该方法的调用程序。 这个过程要一直延续到异常被处理。如果异常到这时还没被处理, 它便回到 main(),而且,即使main()不处理它,那么,该异常就异常地中断程序。 -
8.2异常与资源管理
-
finally块
finally 块表示:无论是否出现异常,都会运行的块 通常在finally块中可以编写资源返还给系统的语句. 它紧跟着最后一个块,是可选的,不论是否抛出异常,finally 块总会被执行。
finally块的语法如下:
try{
}catch(异常类型1 e){
}catch(异常类型2 e){
}finally{
}
第九章
-
9.1 使用Collection集合对象
-
认识collection架构
Connection: 增、删、遍历对象
add
remove
clear
size
iterator -
List: 类似数组,具有位置信息,带索引。List是一种Collection,作用是收集对象,并以索引方式保留收集的对象顺序,其操作类之一是java.util.ArrayList。查看API文件的时候发现,List接口定义了add(int index, E element)、remove(int index)、set(int index, E element)等许多依索引操作的方法。
-
Set: 其中的对象不能有重复的。同样是收集对象,在收集过程中若有相同对象,则不再重复收集,若有这类需求,可以使用Set接口的操作对象,String的Split()方法,可以指定切割字符串的方式。一般用hashcode()与equals()来判断对象是否相同。
-
Queue: 队列 核心方法 offer:添加一个元素并返回true,如果队列已满,则返回false。
poll:移除并返问队列头部的元素,如果队列为空,则返回null。
peek:返回队列头部的元素,如果队列为空,则返回null。
Deque: 双向队列。 -
sort:Java中对象排序,要么对象实现了Comparable可以直接sort要么提供Comparator对象告知sort如何排序
-
9.2 键值对应的Map
-
常用的Map类 以事先利用java.util.Map接口的操作对象来建立键值对应数据,之后若要取得值,只要用对应的键就可以迅速取得。判断键是否重复是根据hashcode()与equals(),所以作为键的对象必须操作hashcode()与equals()。
-
三种常用的Map操作类:
HashMap:建立的键值对应是无序的
TreeMap:建立的键值对应是有序的
Properties:配置文件 -
访问Map键值
如果想取得Map中所有的键,可以调用Map的keySet()返回Set对象。由于键是不重复的,所以使用Set操作返回或者使用values()返回Collection对象。
教材学习中的问题和解决过程
-
throw与throws的区别
-
throw语句
throw 语句用来从代码中主动抛出异常。throw 的操作数是任一种异常类对象。下面是throw关键字的一个示例:
try {
int i = 5/0;
} catch (ArithmeticException i) {
throw new Exception("Can not be divided by zero!");
}
- throws语句
throws用来在方法定义时声明异常。 Java 中对异常的处理有两种方法,一个就是try-catch,然后自己处理;一个就是不做处理,向外throws,由别人去处理。Java 语言要求在方法定义中列出该方法抛出的异常.
代码托管http://git.oschina.net/bestiisjava2017/gaoziyun20155311/tree/master/第五周/src?dir=1&filepath=第五周%2Fsrc&oid=65f5c5020cb63f77b514e476e435e4cb9a48c077&sha=e6f8db6731ed96110cdab1753ed60847bc53d807
- 代码提交过程截图:
上周考试错题总结
- CH06填空:标注(@Override)可以从语法上保证方法的Override.
- 用enum定义一个Season的类型表示四季(public enum Season{SPRING, SUMMER, AUTUMN,WINTER})。
结对及互评
评分标准(满分10分)
-
从0分加到10分为止
-
正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
-
模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
-
教材学习中的问题和解决过程, 一个问题加1分
-
代码调试中的问题和解决过程, 一个问题加1分
-
本周有效代码超过300分行的(加2分)
- 一周提交次数少于20次的不加分
6 其他加分:
- 周五前发博客的加1分
- 感想,体会不假大空的加1分
- 排版精美的加一分
- 进度条中记录学习时间与改进情况的加1分
- 有动手写新代码的加1分
- 课后选择题有验证的加1分
- 代码Commit Message规范的加1分
- 错题学习深入的加1分
7 扣分:
- 有抄袭的扣至0分
- 代码作弊的扣至0分
点评模板:
-
基于评分标准,我给本博客打分:(0-10)。得分情况如下:xxx
点评过的同学博客和代码
其他(感悟、思考等,可选)
对于java的一些最基本知识的了解,我们的学习即将学习完毕。随时学习周数的不断增加,同学之间学习掌握的程度区别越来越大,自己也通过对比,越来越认识到自己的不足和自己很大的进步空间,希望自己能不断克服困难障碍,向掌握良好的同学看齐,不仅仅局限于课本,不断增加自己学习的深度和广度。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | hello java |
第二周 | 300/500 | 2/4 | 18/38 | 流程控制 |
第三周 | 500/1000 | 3/7 | 22/60 | 类与对象、封装 |
第四周 | 300/1300 | 2/9 | 30/90 | 继承、接口 |
第五周 | 950/4000 | 6/9 | 30/90 | 异常与资源管理 |