20155320 2016-2017-2 《Java程序设计》第五周学习总结
20155320 2016-2017-2 《Java程序设计》第五周学习总结
教材学习内容总结
错误处理
java中所有错误都会被打包为对象,可以通过try catch 代表错误的对象后做一些处理。
TtryCatchf 处理范例 Average2和Average3
运行结果为:


- 错误会被包装为对象,这些对象都是可抛出的,设计错误的对象都继承自
java.lang.Throwable类 - 如果某个方法声明抛出Throwable或子类实例,只要不是属于
Error、java.lang.RuntimeException或其子类实例,就必须1.明确使用try、catch语法加以处理2、用throws声明这个方法会抛出异常。否则会编译失败 exception及其子对象称为受检异常,必须做出处理InputMismatchException为一种RuntimeException
避免出现InputMismatchException的程序Average4运行结果为:

- String的
match()方法中设定了"\d*"表示检查字符串中的字符是不是数字。 - 如果父类异常对象在子类异常对象前被捕捉,则catch子类异常对象区块将永不执行,则会被编译程序检查出错
- catch括号中列出的异常不得有继承关系。
- 对于受检异常,如果当前环境不足以处理异常,必须使用throws声明此方法会抛出的异常类型或父类型由调用方法客户端处理,才能通过编译。
在catch区块进行完部分错误处理之后,可以使用throw将异常再抛出,在程序中如果抛出的是受检异常,则必须在方法上使用throws声明
代码范例FileUtil2- 如果使用继承时,父类某个方法声明throws某些异常,子类重新定义该方法时不可以1.throws父类方法中未声明的其他异常2.throws父类方法中声明异常的父类
查看堆栈追踪可以直接调用printStackTrace()
程序房里StackTraceDemo运行结果:

结果显示了异常类型,最顶层是异常的根源,以下是调用方法的顺序:
- 想要取得个别的堆栈追踪元素进行处理,则可以使用``getStackTrace()```,这会返回StackTraceElement数组
- 若要用堆栈追踪,程序中不可有私吞异常。
用throw重抛异常时,异常的追踪堆栈起点,仍是异常的发生根源,而不是重抛异常的地方。
程序StackTraceDemo2运行结果为:

若要堆栈起点为重抛的地方,可以使用fillInStackTrace(),并返回Throwable()对象。
程序fillStrackTrace()- 断言可以使用
assert关键字,若要执行时启动断言检查,可在执行java指令时,指定-enableassertions或是-ea自变量 因错误而抛出异常时,抛出异常处之后的程序代码就不会被执行。但若有finally区块,则finally区块一定会被执行。
程序FinallyDemo运行结果为:

- 若一个异常被catch后的处理过程引发另一个异常,通常会抛出第一个异常作为响应,addSuppressed()方法可将第二个异常记录在第一个异常中,getSuppre()可以返回Throwable[],代表先前被addSuppressed()记录的各个异常对象。
AutoCloseable接口仅定义了close()方法,只要操作这个接口,就可以套用至尝试关闭资源语法。
AutoCloseable操作程序运行结果为:

关闭资源语法课同时关闭两个以上的对象资源,中间以分号分隔,try的括号中越后面撰写的对象资源会越早被关闭
AutoClosable2运行结果为:

Collection与Map
- List是一种Collection,作用是收集对象,并以索引方式保留收集的对象顺序。
- ArrayList 是使用Object数组来保存收集的对象,根据索引随机存取时速度快但调整索引顺序时不便,且数组长度固定;LinkeList采取了链接结构,查找起来会比较没有效率,排序就比较不适合使用List。
具有索引的List
- 在收集过程中若有相同对象则不重复收集,可以使用Set接口的操作对象。String的
split()方法可以指定切割字符串的方式,split会返回String[],HashSet可实现收集对象,其toString()则会包括收集的字符串。
程序WordCount
运行结果为:
HashSet 会使用对象的
hashCode()与equals()来判断对象是否相同运行结果为:

运行结果为:

若对象有操作Queue,并打算以队列方式使用,且队列长度受限,通常建议 使用
offer(),poll()与peek()等方法。
程序RequestQueueQueue的子接口Deque就定义了这类行为,
offerLast()等操作失败时会返回特定值
程序Stack运行结果为:

泛型语法可以在设计API时指定类或方法支持泛型,并得到编译时期检查,使用<>表示支持泛型。
程序ArrayList使用Lambda可避免信息重复。
教材学习中的问题和解决过程
- 学习第九章时,对HashSet中Arrays.asList()的作用清楚,在后边又出现了
List names=Arrays.asList("Justin","Monica","Irene") 通过百度阅读了一些相关博客了解到
Arrays.asList()的作用是将数组转为List(列表)
代码调试中的问题和解决过程
- 在第八章中学习错误抛出时,我在写程序Average3时,由于不注意将trycatch的位置打在了循环的外部,结果出现了如下错误:

后通过比照课本代码,正确修改了过来,我同时通过百度发现无论是在c++还是java中,try catch似乎都不能出现在循环外。
代码托管
代码量截图:

上周考试错题总结
- 21.判断:XX是一个引用型变量,System.out.println(XX)等价于System.out.println(XX.toString()).(OK),在用println时toString可以不用打出来,是等价的
- CH06填空:实现一个类中的equals()方法时,一定要同时实现(hashCode())方法;java中许多要判断对象是否重复时,都会调用hashCode()与equals()方法,因此规格书中建议两个方法必须同时操作。
- 30.填空:面向对象中,设计经验可以用(设计模式)表达
- 4.判断:抽象类的子类可以是抽象类也可以不是。(OK);在子类中可以重新定义父类中的抽象方法
结对及互评
基于评分标准,我给本博客打分:8分。得分情况如下:
- 正确使用Markdown语法:+1
- 模板中的要素基本齐全:+1
- 教材学习中的问题和解决过程:+3
- 代码调试中的问题和解决过程:+2
- 进度条中记录学习时间与改进情况:+1
点评过的同学博客和代码
-
学习感悟及思考
本周学习了异常处理以及Collection与Map相关的内容,尤其是抛出异常部分,让我感受到了java语言的特别之处,这在学习c语言时是不曾有过的。而第九章中的不同种操作了List接口的对象优缺点与最近学习的数据结构不同存储结构的优缺点相互联系了起来,虽然这个星期学习任务较重,在一些部分的学习上遇到了困难,但感觉学习的这些专业课程开始相辅相成了起来,也是一大收获。
学习进度条
| 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
|---|---|---|---|---|
| 目标 | 5000行 | 15篇 | 400小时 | |
| 第一周 | 20/20 | 1/4 | 20/20 | 安装了JDK及IDEA |
| 第二周 | 144/164 | 1/5 | 18/38 | 学习了java语言的基本语法 |
| 第三周 | 447/567 | 1/6 | 20/ 58 | 掌握了一些有关对象和封装的内容 |
| 第四周 | 875/ 1442 | 1/7 | 23/81 | 学习了解了继承、接口和多态的相关问题 |
| 第五周 | 775/2250 | 1/8 | 25/106 | 学习了异常处理以及Collection与Map相关的内容 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:25小时
实际学习时间:25小时
改进情况:根据本周内容量较大本来定的是23小时,后来学了一些后发现还很难理解,于是增加了两小时的学习量。
参考资料
20155320 2016-2017-2 《Java程序设计》第五周学习总结的更多相关文章
- 201521123025<java程序设计>第五周学习总结
1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1.2 ...
- Java程序设计第五周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 **代码阅读:Child压缩包内源代码 Child.java源代 ...
- 20155320 2016-2017-2《Java程序设计》第九周学习总结
20155320 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ...
- 20155320 2016-2017-2 《Java程序设计》第二周学习总结
20155320 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周主要学习了java语言的基础语法,我发现与以前学过的c语言有许多共同点,无论是从一些基本 ...
- 20155326 2016-2017-2 《Java程序设计》第九周学习总结
20155326 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 1.撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找. 2.JDBC目的 ...
- 20155227 2016-2017-2 《Java程序设计》第九周学习总结
20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...
- 20155328 2016-2017-2 《Java程序设计》第九周学习总结
20155328 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 16.1 JDBC入门 JDBC是Java联机数据库的标准规范,定义一组标准类与接口,应用程 ...
- 20155216 2016-2017-2 《Java程序设计》第九周学习总结
20155216 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC架构 JDBC API的使用 JDBC连接数据库 1.导入JDBC包: 添加impo ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
随机推荐
- redis启动.停止.重启
Linux下安装 ]# wget http://download.redis.io/releases/redis-2.8.17.tar.gz ]# tar xzf redis-2.8.17.tar.g ...
- Virtualbox [The headers for the current running kernel were not found] (操作过程后还是失败,显示相同问题)
在笔记本安装Ubuntu11.04增强功能失败 引用 fuliang@fuliang-VirtualBox:~$ sudo /etc/init.d/vboxadd setup Removing exi ...
- SOA (面向服务的架构)
面向服务的体系结构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台.操作系统和编程语 ...
- electron 大体结构
1.Electron支持的平台: OS XWindowsLinux 2.一个标准的electron app包含的结构: Windows 或是 Linux中:electron/resources/app ...
- /Library,/System/Library,~/Library
/System/library是系统级,/ Library下面面向全部用户,~/Library 限于当前用户 一般来说,很少碰/ Library,都是用到/System/library和~/lib ...
- 55. Jump Game (Array; Greedy)
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- [leetcode]636. Exclusive Time of Functions函数独占时间
Given the running logs of n functions that are executed in a nonpreemptive single threaded CPU, find ...
- discuz回贴通知插件实现-显示用户状态设置
一.完善用户是否开启回贴通知 回贴通知插件建立模块时,指定了核心文件post_set.inc.php 1.创立好数据库 建立独立数据表(不建议直接修改原有的discuz数据库,防止discuz升级 ...
- Ubuntu部分命令的使用简介
1.查看USB设备 lsusb #查看系统中的usb设备 lsusb –v #查看详细的usb设备信息 2.ubuntu mount u盘 第一步:查看U盘信息 sudo fdisk -l 得到类似 ...
- 工作五年以上的 UI 设计师都在干什么?
30 岁,现在坐标北京,从毕业至今都一直在做设计.目前从业超过了五年,也没打算离开设计这个行业.即便有一天不再从事设计专职的岗位,也仍然会在生活中,或者一些份外的工作中做「设计师」的角色,因为设计已成 ...