学号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分)

  1. 从0分加到10分为止

  2. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  3. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  4. 教材学习中的问题和解决过程, 一个问题加1分

  5. 代码调试中的问题和解决过程, 一个问题加1分

  6. 本周有效代码超过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 异常与资源管理
posted @ 2017-03-26 22:24  Gaoziyun  阅读(308)  评论(3编辑  收藏  举报