20155216 2016-2017-2 《Java程序设计》第五周学习总结

教材学习内容总结

使用try,catch,finally处理异常

JVM会尝试执行try区块中的程序代码,如果发生错误,执行流程会跳离错误发生点,然后比较catch区块中声明的类型,是否符合被抛出的错误对象类型,如果是的话,就执行catch区块中的程序代码。
无论try区块中有无发生异常,若撰写有finally区块,则finally区块一定会被执行。finally区块会先执行完后,在将值返回。
一个try所包括的区块,必须有对应的catch区块,可以有多个catch,finally可有可无,如果没有定义catch,则一定要有finally区块。

异常继承架构

设计错误对象都继承自java.lang.Throwable类,Throwable定义取得错误信息、堆栈追踪等方法,它有两个子类:java.lang.Errorjava.lang.Exception
Error对象抛出时,基本上不用处理,任其传播至JVM为止。
如果为程序本身设计错误,使用Exception或其子类实例来表现,必须使用try、catch语句加以处理,或使用throws抛出异常。

throw、throws的使用时机

throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。

throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
throw是具体向外抛异常的动作,所以它是抛出一个异常实例。

throws说明你有那个可能,倾向。
throw的话,那就是你把那个倾向变成真实的了。

throws出现在方法函数头;而throw出现在函数体。
throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。

尝试关闭资源

尝试关闭资源语句可套用的对象,必须操作java.lang.AutoCloseable接口,可同时关闭两个以上的对象资源,中间以逗号分隔。在try中,越后面的对象资源会越早被关闭。

Collection与Map

Collection架构
直接继承Collection接口的有List、Queue和Set接口。

List 以特定次序来持有元素。
用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,允许直接按序号索引元素。
LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。LinkedList可以被当作堆栈和队列来使用。

Set里的元素是不能重复的,元素重复与否使用equals()hashCode方法进行判断的。
HashSet类的集合不可以按索引号去检索其中的元素。
TreeSet是一个有序集合,TreeSet中的元素将按照升序排列,缺省是按照自然排序进行排列,在构造TreeSet对象时,使用Comparator接口作为比较器对象。

Queue架构。

Map架构
Map 是映射接口,Map中存储的内容是键值对。

AbseractMap
TreeMap 继承于AbstractMap,且实现了NavigableMap接口;因此,TreeMap中的内容是有序的键值对。
HashMap 继承于AbstractMap,但没实现NavigableMap接口;因此,HashMap的内容是键值对,但不保证次序。

Hashtable的内容也是“键值对,也不保证次序”。但和HashMap相比,它支持通过Enumeration去遍历。

Lambda表达式

Lambda表达式的语法省略了接口类型与方法名称,->左边是参数列,右边是方法本体。

Request
编译程序可以由Request request的声明中得知语法上被省略的信息。

Interable和Iterator
List,Set,Queue都有iterator()方法和行为,可以使用Iterator的hasNext()查看有无下一个对象,若有,则用next取得下一个对象。
Iterable可使循环更加简化。

static void XXX(Iterable iterable) {
for(Object o:iterable) {
System.out.println(o);
}
}

Comparable与Comparator
Collect的sort方法在取得a对象与b对象进行比较时,调用a.compare(b),如果a对象顺序上小于b对象则返回小于0的值,若顺序上相等则返回0,若顺序上a大于b则返回大于0的值。

Comparator的compare()会传入两个对象,并且在List上增加了Sort()方法,可接受Comparator实例来指定排序方式。

使用泛型

使用泛型语法,可在设计API时可以指定类或方法支持泛型,适当地使用泛型语句,语法上可以更加简洁,编译程序时也可以事先做类型检查。

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

  • xx1问题
    TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常。

  • xx1解决方案
    查询资料得:
    如果子类和父类都复写了compareTo方法那么各自调用自己的compareTo方法。
    如果子类没有复写compareTo方法,那么调用的都是父类的compareTo方法。

  • xx2问题
    对于Queue缺乏了解。

  • xx2解决方案
    Queue方法 作用 异常形式
    add 增加一个元索 , 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
    remove 移除并返回队列头部的元素 , 如果队列为空,则抛出一个NoSuchElementException异常
    element 返回队列头部的元素, 如果队列为空,则抛出一个NoSuchElementException异常
    element 返回队列头部的元素 , 如果队列已满,则返回false
    offer 添加一个元素并返回true, 如果队列为空,则返回null
    poll 移除并返问队列头部的元素 , 如果队列为空,则返回null
    peek 返回队列头部的元素, 如果队列满,则阻塞
    put 添加一个元素, 如果队列满,则阻塞
    take 移除并返回队列头部的元素, 如果队列为空,则阻塞

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

  • xx1问题

  • xx1解决方案
    在class定义前加上一行:
    @SuppressWarnings("unchecked")
    来避免终端的警告。

  • xx2问题

  • xx2解决方案
    尚未解决。

代码托管

  • 代码提交过程截图:

  • 代码量截图:

上周考试错题总结

  • 1、使用JDB进行调试时单步执行命令有step和next,优先使用next。
  • 2、"Hello".charAt(1)的值是‘e’。
  • 3、"hello".substring(0,2)的值是"He"。
  • 4、不能用父类声明对象引用,用子类生成对象。
  • 5、编译RPG.java的命令是javac -d . *.java
  • 6、实现一个类中的equals()方法时,一定同时实现hashCode()方法。

结对及互评

结对对象:20155238 张景禹
张景禹同学本周对于java的学习较为认真,每天有翻阅教材并阅读学习指导。
两人在学习过程中一直不断相互解决代码运行中出现的问题以及课本的难点内容的讨论。
唯一不足的是张同学代码提交较少,没有每天提交代码的习惯,在今后的学习过程中将加以督促。

评分标准(满分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

  • 参考示例

点评过的同学博客和代码

其他(感悟、思考等,可选)

  • 1、对于第8、9章的学习最大的感受就是了解了异常继承架构、Map架构和Collection架构,认识到了java的架构形式。
  • 2、使用try、catch、finally处理异常是java的一大特点。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 6/6 1/4 20/20
第二周 334/340 1/5 18/38
第三周 570/900 1/6 22/60
第四周 544/1358 1/7 30/90
第五周 731/2089 1/8 30/90 了解了java中的架构,排序,以及异常处理

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

20155216 2016-2017-2 《Java程序设计》第五周学习总结的更多相关文章

  1. 201521123025<java程序设计>第五周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1.2 ...

  2. Java程序设计第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 **代码阅读:Child压缩包内源代码 Child.java源代 ...

  3. 20155216 2016-2017-2 《Java程序设计》第九周学习总结

    20155216 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC架构 JDBC API的使用 JDBC连接数据库 1.导入JDBC包: 添加impo ...

  4. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  5. 20155328 2016-2017-2 《Java程序设计》第九周学习总结

    20155328 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 16.1 JDBC入门 JDBC是Java联机数据库的标准规范,定义一组标准类与接口,应用程 ...

  6. 20155320 2016-2017-2《Java程序设计》第九周学习总结

    20155320 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ...

  7. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  8. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  9. 20145236 《Java程序设计》第九周学习总结

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  10. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

随机推荐

  1. 【Golang】幽灵变量(变量覆盖)问题的一劳永逸解决方法

    背景 在我们公司,测试定位问题的能力在考核中占了一定的比例,所以我们定位问题的主动性会比较高.因为很多开发同学都是刚开始使用golang,所以bug频出,其中又以短变量声明语法导致的错误最多.所以就专 ...

  2. JavaScript权威指南--脚本化CSS

    知识要点 客户端javascript程序员对CSS感兴趣的是因为样式可以通过脚本编程.脚本化css启用了一系列有趣的视觉效果.例如:可以创建动画让文档从右侧“滑入”.创造这些效果的javascript ...

  3. Codeforces 496C - Removing Columns

    496C - Removing Columns 思路:暴力,用vis标记数组实时记录一下之前的行i+1和上一行i否全相等,false表示全相等. 代码: #include<bits/stdc++ ...

  4. 拓扑排序 Topological Sort

    2018-05-02 16:26:07 在计算机科学领域,有向图的拓扑排序或拓扑排序是其顶点的线性排序,使得对于从顶点u到顶点v的每个有向边uv,u在排序中都在v前.例如,图形的顶点可以表示要执行的任 ...

  5. Java 访问权限修饰符以及protected修饰符的理解

    2017-11-04 22:28:39 访问权限修饰符的权限 访问修饰符protected的权限理解 在Core Java中有这样一段话“在Object类中,clone方法被声明为protected, ...

  6. 新视觉影院yy6080.org视频的抓取

    用fiddler 分析了一下, 从点连接 到 视频播放的过程 http://yy6080.org/v/103390 http://id.jiathis.com/id.php?u=http%3A%2F% ...

  7. 雷林鹏分享:C# 属性(Property)

    C# 属性(Property) 属性(Property) 是类(class).结构(structure)和接口(interface)的命名(named)成员.类或结构中的成员变量或方法称为 域(Fie ...

  8. codeforces 576a//Vasya and Petya's Game// Codeforces Round #319 (Div. 1)

    题意:猜数游戏变种.先选好猜的数,对方会告诉你他想的那个数(1-n)能不能整除你猜的数,问最少猜几个数能保证知道对方想的数是多少? 对一个质数p,如果p^x不猜,那么就无法区分p^(x-1)和p^x, ...

  9. Python装饰器、生成器、内置函数、json

    这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如 ...

  10. Eclipse重命名项目名后如何彻底修改工程名

    背景:在Eclipse中当我们修改了一个Web项目名称后,在再次运行该项目,发现使用新的名称无法正常的浏览,而用旧的名称去可以 解决方案: 1:修改该项目目录下:.project文件 <?xml ...