20145105 《Java程序设计》第5周学习总结
20145105 《Java程序设计》第5周学习总结
教材学习内容总结
第八章 异常处理
一、语法与继承架构
(一)使用try、catch
执行流程
- 尝试执行try区块中程序代码
- 如果出现错误,执行流程跳离错误发生点
- 比较catch区块中声明的类型,如果符合被抛出的错误对象类型,就执行catch区块的代码。
- 运行结果

- 运行结果

意义:针对错误做一些处理,可以恢复正常流程,进行日志记录等。
- 运行结果

- 运行结果
(二)异常继承架构
错误对象都继承自
java.lang.Throwable类,其有两个子类:java.lang.Error与java.lang.Exception。Error与其子类实例代表严重系统错误,基本不用处理,最多留下日志信息。Exception与其子类实例代表程序设计本身的错误。- 运行结果

- 运行结果
子类异常对象应该在父类异常对象前被捕捉,否则子类异常对象的区块将永远不会被执行。
多重捕捉中,catch括号中列出的异常不能有继承关系,否则会发生编译错误。
(三)要抓还是要抛
throws:自己无法处理,用在方法声明。
throw:方法中跑出
Checked Exception,方法声明中必须有throws。
(四)贴心还是造成麻烦
(五)认识堆栈追踪
直接调用异常对象的
printStackTrace(),是常看堆栈追踪的最简单方法。- 运行结果

- 运行结果
使用throw重抛异常时,异常的追踪堆栈起点,仍是异常的发生根源,不是重抛异常的地方。
- 运行结果

- 运行结果
使用
fillInStackTrace()方法,可以重新装填异常堆栈,将起点设为重抛异常的地方,并返回Throwable对象。- 运行结果

- 运行结果
(六)关于assert
- 使用断言的时机
- 如果程序上线后不需要checkGreatThanZero()检查,可用assert取代。
- 一定不能有default时,也可用assert来取代。
二、异常与资源管理
(一)使用finally
利用finally区块一定会被执行的特点,可以在finally区块中调用
close()方法,避免资源不被关闭。- 运行结果

- 运行结果
(二)自动尝试关闭资源
JDK7之后,想要尝试自动关闭的资源,可以撰写在try之后的括号中。
(三)java.lang.AutoCloseable接口
JDK7尝试关闭资源语法可套用的对象,必须操作
java.lang.AutoCloseable接口。- 运行结果

- 运行结果
同时关闭两个以上的资源,只需要以分号分隔,越后面的越先关闭。
- 运行结果

- 运行结果
第九章 Collection与Map
一、使用Collection收集对象
(一)认识Collection架构
java.util.Collection:收集对象,如:- add():新增对象
- remove():移除对象
java.util.Iterable:逐一取得对象,如:- interator():返回操作对象
java.util.List:记录每个对象的索引顺序,并可按索引取回对象。java,util.Set:收集对象不重复,且具有集合的行为java.util.queue:收集对象时以队列的方式,收集的对象加入至尾端,取得对象时从前端java.util.Deque:对Queue两端进行加入、移除等操作
(二)具有索引的List
ArrayList特性:根据索引随机存取时速度快,需要调整索引顺序时表现较差。
- 运行结果

- 运行结果
LinkedList特性:根据索引随机存取对象时较慢,但有利于调整索引顺序。
出错
(三)内容不重复的Set
Arrays.asList()方法返回List,而List是一种Collection,所以可传给HashSet接受Collection实例的构造函数。- 运行结果

- 运行结果
Java中许多要判断对象是否重复时,会同时调用
hashCode()与equals()。出错
(四)支持队列操作的Queue
offer()、poll()、peek()等方法操作失败会返回固定值。
- 运行结果

- 运行结果
Deque是Queue的子接口,定义了对队列的操作。
- 运行结果

- 运行结果
(五)使用泛型
使用泛型可以让程序更简洁
(六)简介Lambda表达式
Lambda表达式的语法省略了接口类型与方法名称,“->”左边是参数列,右边是方法本体。
- 运行结果

- 运行结果
(七)Interable和Iterator
增强式for循环可用在数组上,也可用在操作Iterable接口的对象上。
- 运行结果

- 运行结果
(八)Comparable与Comoarator
- 与顺序有关的行为,要么对象本身是Comparable,要么另行指定Comparator对象告知如何排序。
- 返回值(小于0,等于0或大于0)用来调换排列顺序。
二、键值对应的Map
(一)常用Map操作类
- 使用HashMap:键是无序的
- 使用TreeMap:键是有序的
- 使用Properties:setProperty()指定字符串类型的键值,getProperty()指定字符串类型的键。
(二)访问Map键值
- keySet():取得Map中所有键
- Values():取得Map中所有值
- entrySet():同时取得Map的键和值(调用getKey()取得键,getValue()取得值)
教材学习中的问题和解决过程
- 学习8.1.1时,看到try、catch捕捉错误的案例,书中只捕捉了一个错误,当时疑惑如果有多个错误该如何捕捉?
解决:学习到8.1.2时看到书中片段
try{
做一些事...
}catch(IOException | InterruptedException | ClassCastException e) {
e.printStackTrace();
}
代码调试中的问题和解决过程
编写P253的范例后,始终提示错误,检查了好几遍就是觉得写的没错,过两天再查的时候发现try括号中
new ResourceSome()缺少了(),ResourceOther other少了other,十分诧异自己当时看了那么多遍,怎么就没看出来这么大的缺漏。。。编写P269范例Students的后,最后的set始终显示错误,后来编写到Students2时发现该处应该为students。

编写270范例Students2时出现很多问题。。。尚未解决


其他(感悟、思考等,可选)
听了老师的话,看了学姐辛苦码的心得,我也对自己的博客内容和版式做出一些改进,自己还是希望变得优秀,并且也确实在一点一点进步着的。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 3000行 | 15篇 | 300小时 | |
| 第一周 | 70/70 | 2/2 | 14/14 | |
| 第二周 | 150/220 | 1/3 | 18/32 | |
| 第三周 | 400/620 | 1/4 | 35/67 | |
| 第四周 | 850/1470 | 1/5 | 30/97 | |
| 第五周 | 560/2030 | 1/6 | 34/131 |
参考资料
20145105 《Java程序设计》第5周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- 图片asp木马的制作方法[转]
一个网站里面除了asp文件,再就数图片文件最多了,它让我们的网页"美丽动人"嘻嘻,但是你有没有想到过这里面暗藏的杀机,图片也可以是asp木马. 一个网站里面除了asp文件,再就数图 ...
- IOS实例方法和类方法的区别
类方法和实例方法 实例方法是— 类开头是+ 实例方法是用实例对象访问,类方法的对象是类而不是实例,通常创建对象或者工具类. 在实例方法里,根据继承原理发送消息给self和super其实都是发送给s ...
- request.get... getHeader 能取得的信息 参数
转载▼ StringTokenizer st = new StringTokenizer(agent,";"); st.nextToken(); //得到用户的浏览器名 Str ...
- 【BZOJ1879】[Sdoi2009]Bill的挑战 状压DP
[BZOJ1879][Sdoi2009]Bill的挑战 Description Input 本题包含多组数据. 第一行:一个整数T,表示数据的个数. 对于每组数据: 第一行:两个整数,N和K(含 ...
- 【BZOJ5099】[POI2018]Pionek 几何+双指针
[BZOJ5099][POI2018]Pionek Description 在无限大的二维平面的原点(0,0)放置着一个棋子.你有n条可用的移动指令,每条指令可以用一个二维整数向量表示.每条指令最多只 ...
- Vue 学习顺序
起步: 1.扎实的 JavaScript / HTML / CSS 基本功,ES6 最好过一遍 2.通读官方教程 (guide) 的基础篇.不要用任何构建工具,就只用最简单的 <script&g ...
- 170614、MySQL存储引擎-MyISAM与InnoDB区别
MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理 ...
- Object 对象有哪些方法?
这个不看还真不一定能说全,请养成良好的阅读源码和JDK文档的习惯. 总结一下:一共11个,wait的3个+notify的2个,hashCode和equals还有toString共3个,然后clone和 ...
- php最全基础,数组,函数,超全局变量,时间,回话,文件,php操作mysql
共享一份学习php最全基础语法知识的笔记 原文链接:http://www.cnblogs.com/oscn/p/3607757.html:略有修改 http://www.cnblogs.com/l ...
- 删除 oracle
C:\app\Administrator\product\11.2.0\client_1\deinstall 用这个批处理文件,会把oracle全部删除,除这个目录本身以外 .另外它不删除服务,即使服 ...