20145105 《Java程序设计》第5周学习总结
20145105 《Java程序设计》第5周学习总结
教材学习内容总结
第八章 异常处理
一、语法与继承架构
(一)使用try、catch
执行流程
- 尝试执行try区块中程序代码
- 如果出现错误,执行流程跳离错误发生点
- 比较catch区块中声明的类型,如果符合被抛出的错误对象类型,就执行catch区块的代码。
范例Average
- 运行结果
范例Average2
- 运行结果
意义:针对错误做一些处理,可以恢复正常流程,进行日志记录等。
范例Average3
- 运行结果
- 运行结果
(二)异常继承架构
- 错误对象都继承自
java.lang.Throwable
类,其有两个子类:java.lang.Error
与java.lang.Exception
。 Error
与其子类实例代表严重系统错误,基本不用处理,最多留下日志信息。Exception
与其子类实例代表程序设计本身的错误。范例Average4
- 运行结果
- 运行结果
- 子类异常对象应该在父类异常对象前被捕捉,否则子类异常对象的区块将永远不会被执行。
多重捕捉中,catch括号中列出的异常不能有继承关系,否则会发生编译错误。
(三)要抓还是要抛
- throws:自己无法处理,用在方法声明。
throw:方法中跑出
Checked Exception
,方法声明中必须有throws。范例FileUtil
(四)贴心还是造成麻烦
(五)认识堆栈追踪
直接调用异常对象的
printStackTrace()
,是常看堆栈追踪的最简单方法。范例StackTraceDemo
- 运行结果
- 运行结果
使用throw重抛异常时,异常的追踪堆栈起点,仍是异常的发生根源,不是重抛异常的地方。
范例StackTraceDemo2
- 运行结果
- 运行结果
使用
fillInStackTrace()
方法,可以重新装填异常堆栈,将起点设为重抛异常的地方,并返回Throwable对象。范例StackTraceDemo3
- 运行结果
- 运行结果
(六)关于assert
- 使用断言的时机
- 如果程序上线后不需要checkGreatThanZero()检查,可用assert取代。
- 一定不能有default时,也可用assert来取代。
二、异常与资源管理
(一)使用finally
利用finally区块一定会被执行的特点,可以在finally区块中调用
close()
方法,避免资源不被关闭。范例FinallyDemo
- 运行结果
- 运行结果
(二)自动尝试关闭资源
JDK7之后,想要尝试自动关闭的资源,可以撰写在try之后的括号中。
范例FileUtile2
(三)java.lang.AutoCloseable接口
JDK7尝试关闭资源语法可套用的对象,必须操作
java.lang.AutoCloseable
接口。范例AutoClosableDemo
- 运行结果
- 运行结果
同时关闭两个以上的资源,只需要以分号分隔,越后面的越先关闭。
范例AutoClosableDemo2
- 运行结果
- 运行结果
第九章 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特性:根据索引随机存取时速度快,需要调整索引顺序时表现较差。
范例Guest
- 运行结果
- 运行结果
LinkedList特性:根据索引随机存取对象时较慢,但有利于调整索引顺序。
出错
(三)内容不重复的Set
Arrays.asList()
方法返回List,而List是一种Collection,所以可传给HashSet接受Collection实例的构造函数。范例WordCount
- 运行结果
- 运行结果
Java中许多要判断对象是否重复时,会同时调用
hashCode()
与equals()
。出错
(四)支持队列操作的Queue
offer()、poll()、peek()等方法操作失败会返回固定值。
范例RequestQueue
- 运行结果
- 运行结果
Deque是Queue的子接口,定义了对队列的操作。
范例Stack
- 运行结果
- 运行结果
(五)使用泛型
使用泛型可以让程序更简洁
范例ArrayList
(六)简介Lambda表达式
Lambda表达式的语法省略了接口类型与方法名称,“->”左边是参数列,右边是方法本体。
范例RequesQueue2
- 运行结果
- 运行结果
(七)Interable和Iterator
增强式for循环可用在数组上,也可用在操作Iterable接口的对象上。
范例ForEach
- 运行结果
- 运行结果
(八)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 |
参考资料
- Java学习笔记(第8版)
- 《Java学习笔记(第8版)》学习指导
- ...
转载于:https://www.cnblogs.com/schwarizard/p/5350995.html
20145105 《Java程序设计》第5周学习总结相关推荐
- 20175317 《Java程序设计》第一周学习总结
20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...
- 20155227 2016-2017-2 《Java程序设计》第九周学习总结
20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...
- 20172318 2016-2017-2 《Java程序设计》第一周学习总结
20172318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 在教材中基本明白了计算机系统的运行方式,了解了对于高级语言是使用是掌握好编程的关键,掌握了一 ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20175208 《Java程序设计》第九周学习总结
20175208 2018-2019-2 <Java程序设计>第九周学习总结 一.教材学习内容总结: 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系 ...
- 20175204 张湲祯 2018-2019-2《Java程序设计》第九周学习总结
20175204 张湲祯 2018-2019-2<Java程序设计>第九周学习总结 教材学习内容总结 -第十一章JDBC和MySQL数据库要点: 1.下载MySQL和客户端管理工具navi ...
- 20155313 2016-2017-2 《Java程序设计》第二周学习总结
20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...
- 20155226 2016-2017-2 《Java程序设计》第一周学习总结
20155226 2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 第一周主要学习了一二章的内容,也浏览了剩余章节,以下是本周主要学习内容总结 1.首先了解了[ ...
- 20172325 2018-2019-1 《Java程序设计》第二周学习总结
20172325 2018-2019-1 <Java程序设计>第二周学习总结 教材学习内容总结 3.1集合 集合是一种聚集.组织了其他对象的对象.集合可以分为两大类:线性集合和非线性集合. ...
- 张旭升20162329 2006-2007-2 《Java程序设计》第一周学习总结
20162329 2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 通过打书上的代码熟悉了Java编程的基本过程 教材学习中的问题和解决过程 1.因为我的虚拟机 ...
最新文章
- c++ ofstream使用方法
- ElasticSearch(八):springboot集成ElasticSearch集群并使用
- java 动态数组的应用
- 高级打字机【主席树】【滚动数组】【块状链表】
- mysql 双冒号_jdk8新特性之双冒号 :: 用法及详解
- USACO翻译:USACO 2014 DEC Silver三题
- jane street information session on pythonandocaml
- 如何基于Weex实现创新交互体验?手淘开源技术BindingX案例解析
- oracle+连接格式,oracle外连接符号(+)的用法
- 最实用的机器学习算法Top5
- 吴恩达深度学习 —— 作业2
- linux下静默安装weblogic 12
- [13]2019-ICML-Active Learning for Probabilistic Structured Prediction of Cuts and Matchings
- reids学习笔记汇总
- mysql 查询polygon_如何通过mysql 判断点是否在指定多边形区域内
- c语言多文件编程,即main文件调用其他.c文件的方法
- vml时序表_Vml:美洲豹系列教程之十一(数据图表)
- 200行Python实现的qq连连看辅助,用于学习,请不要拿去伤害玩家
- 写在2022的尾巴上
- 缺少链接库 : /bin/ld: cannot find -lxxx
热门文章
- intel lock汇编指令保障有序性
- JVM内存区域:递归JVM指令分析
- 非公平锁和公平锁在reetrantlock里的实现过程是怎样的
- 请详细描述一下线程从创建到死亡的几种状态都有哪些?
- MATLAB中改变默认当前文件夹
- 基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据
- mysql 更改 uf_SQL经典实例(四)插入、更新和删除
- Qt C++单例类写法
- java输出文件中匹配的字段_Java如何从文件中打印与给定模式匹配的所有字符串?...
- 用 openssl 生成 SSL 使用的私钥和证书,并自己做 CA 签名