20155216 2016-2017-2 《Java程序设计》第五周学习总结
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.Error
与java.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分)
- 从0分加到10分为止
- 正确使用Markdown语法(加1分):
- 不使用Markdown不加分
- 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
- 排版混乱的不加分
- 模板中的要素齐全(加1分)
- 缺少“教材学习中的问题和解决过程”的不加分
- 缺少“代码调试中的问题和解决过程”的不加分
- 代码托管不能打开的不加分
- 缺少“结对及互评”的不能打开的不加分
- 缺少“上周考试错题总结”的不能加分
- 缺少“进度条”的不能加分
- 缺少“参考资料”的不能加分
教材学习中的问题和解决过程, 一个问题加1分
代码调试中的问题和解决过程, 一个问题加1分
- 本周有效代码超过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就接近了。
计划学习时间:20小时
实际学习时间:23小时
改进情况:
参考资料
20155216 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源代 ...
- 20155216 2016-2017-2 《Java程序设计》第九周学习总结
20155216 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC架构 JDBC API的使用 JDBC连接数据库 1.导入JDBC包: 添加impo ...
- 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联机数据库的标准规范,定义一组标准类与接口,应用程 ...
- 20155320 2016-2017-2《Java程序设计》第九周学习总结
20155320 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145236 《Java程序设计》第九周学习总结
20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...
- 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结
20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...
随机推荐
- [原][osg][osgearth]简单的通过osgDB,读取高程tif,修改高程tif
ReadResult result; osg::ref_ptr<osgDB::ReaderWriter> reader = osgDB::Registry::instance()-> ...
- 关于python中的 “ FileNotFoundError: [Errno 2] No such file or directory: '……'问题 ”
今天在学python时,在模仿一个为图片加上图标并移动到指定文件夹的程序时遇到“FileNotFoundError: [Errno 2] No such file or directory: '152 ...
- Centos修改系统语言
使用man page帮助时,发现居然是中文的,不过想想即便英语再水,也要逼着自己去适应.于是百度找了一下修改系统语言的方法. 首先使用 locale 命令查看当前的系统语言 然后修改时一般有两种方法, ...
- Python mysql-数据库基础知识
2017-09-05 19:10:55 一.数据库定义 从本质上讲,数据库就是信息的集合,它可以存在很长时间,往往是很多年.一般来讲,"数据库"这个词指的是有数据库管理系统管理的数 ...
- PHP面向对象初中高级之由浅入深
php面向对象编程基本实践:(了解类,类到对象的实例化,构造和析构,对象的引用); 类的概念: 物以类聚,把具有相似特性的对象对垒到一个类中 类定义了这些相似对象拥有的相同的属性和方法 类是相似对象的 ...
- Docker 构建 redis 集群
安装docker 1.yum install docker 方法一: 1. docker pull redis 2.docker run -d --name redis-1 -p 7001:6379 ...
- Redis基础知识点面试手册
Redis基础知识点面试手册 基础 概述 数据类型 STRING LIST SET HASH ZSET(SORTEDSET) 数据结构 字典 跳跃表 使用场景 会话缓存 缓存 计数器 查找表 消息队列 ...
- Android将view保存为图片并放在相册中
在Android中,可以将view保存为图片并放在相册中,步骤为 view->bitmap->file,即先将view转化为bitmap,再将bitmap保存到相册中. 需要将红框标注的v ...
- vue2.0对不同数据类型的显示
- WindowsLiveWriter安装步骤
WindowsLiveWriter 安装WindowsLiveWriter.exe http://www.cnblogs.com/rhxuza1993/