20145311 《Java程序设计》第5周学习总结

教材学习内容总结

第八章

8.1语法与继承结构

8.1.1Try、catch

java中所有的错误都会打包为对象,可以try catch代表错误的对象后做一些处理(可以显示错误,也可以恢复正常流程)。

8.1.2异常继承架构

错误包装为对象是可以抛出的,所有的设计错误对象都是继承java.lang.Throwable类(java.lang.Error、java.lang.Exception为其两个子类)。一般的,error错误抛出时,基本上不用处理。 如果某个方法声明会throw throwable或子类实例,不是error和runtimeexception及其子类,即必须用try catch进行处理。
exception及其子对象,不少于runtimeexception或其子对象,称为受检异常(受编译程序检查),程序认为你有能力处理错误,你就需要去处理。同时要注意错误发生的时机,是否可以及时处理。
如果父类异常对象在子类异常对象前catch,那么catch子类异常对象的区块将永远不会被执行,所以要注意捕捉的顺序。
可以使用多重捕捉简化程序(注意不得有继承关系)。

8.1.3Throw or Catch

如果方法设计流程中发生异常,而你没有充足的信息来知道如何处理,可以抛出异常,让调用方法的客户端来处理。 处理完部分错误后,可以使用throw将异常再抛出,但必须在方法上使用throws声明(受检异常)

8.1.4

处理完部分异常后,你可以重新抛出异常,为了更精确地显示错误,可以通过自定义异常

8.1.5Stacktrace

可以使用printstacktrace来进行错误的追踪,要善用stacktrace。用fillinstacktrace()方法可以重新装填异常堆栈,将起点设为重抛异常的地方,并返回throwable对象。

8.1.6assert

用来判断程序执行的某个time point或是否处于某个特定的state,不是的话可以停止程序进行修改。
Assertion常用的几种情况:
1、前置条件的准备(private方法之中) 2、调用方法后承诺效果 3、assert对象某个time point下的状态 4、取代批注 5、assert不会执行到的那部分 6、不能有default的状况

8.2异常与资源管理

8.2.1finally

无论try区块中有误发生异常,若有finally区块,则finally区块一定会被执行。另外注意如果程序流程中先return了,同时有finally区块,那会先执行finally区块再返回值。

8.2.2Try-With-Resources

自动尝试关闭资源是协助你关闭资源,而不是用于异常处理,使用该语法时,不要试图自行撰写程序代码关闭资源。

8.2.3java.lang.AutoCloseable

try with resources 语法所操作的一个接口。

第九章

9.1Collection

9.1.1Collection架构

记录每个对象的索引顺序并能依索引取回对象,这样的行为定义在java.lang.list中;如果希望对象不重复,则由java.util.Set定义;如果以队列方式,使用java.lang.Queue。(不同的收集对象的需求操作不同的接口、继承不同的类)。

9.1.2List

以索引方式保留收集对象的顺寻,操作类之一为java.lang.ArrayList
ArrayList与LinkedList的区别:(一个是顺序存储结构,一个是链式存储结构,各有优势和缺点)
arraylist:数组在内存中会是连续的存储空间,不适合调整索引顺序,但是存取时速度快。
linkedlist:存储效率低,不适合排序,但是调整索引顺序所需动作较少。

9.1.3Set

存在不收集相同对象的需求时,可以使用Set接口操作对象。java中判断对象是否重复时,都会调用hashcode()与equals()方法,两个方法最好同时操作。

9.1.4Queue

收集对象时加入尾端,取得对象时从前段(有点像堆栈,先进后出、后进先出),Queue自己定义了offer、poll、peak等方法(各有各自的功能)
如果需要对队列的前端与尾端进行操作,就可以用到Deque中定义的一些行为。

9.1.5Generics

在设计API时可以指定类或方法支持泛型,从而使对象重新扮演为某种类型,使语法更为简洁。

9.1.6Lambda

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

9.1.7Interable Interator

iterator()方法会返回java.util.Interator接口的操作对象,可以使用hasnext()来看有无下一个对象,interable可以用在增强式for()循环中,感觉就是将上述的那几种结构做了一个统一,方便从里面取值输出。

9.1.8Comparable Comparator

Collection中提供有排序的算法,但必须有索引,所以sort()方法接受list的操作对象。
Comparator:用来排序的接口

9.2Map

9.2.1Map操作类

9.2.2访问键值

HashMap、TreeMap为两个常用操作类:建立键值对应,可以使用puts()方法,键不会重复,hashmap键值建立后,键是无序的,想要有序可以使用treemap。

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

课后练习:
Ch8:C C B ACD ACD CD B A A A

Ch9:CD AB C D D A ABC C C CD

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

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

这两章感觉没咋看懂,异常处理这块和第九章好像是java中的数据结构,比之前的复杂了一些,多了许多类,许多种语法,继承架构也明显地变抽象了,有很多东西都与API 有关,要善于查API,java中的类太多,不需要全部记住,但是要会查、会用。程序就是通过不断地学习,一点点拼凑出来的。

学习进度条

  代码行数(新增/累积 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时  
第一周 150/200 2/2 15/20  
第二周 400/500 3/4 32/35  
第三周 800/1000 4/5 55/60

第四周 1000/1300 5/6 75/80  
第五周 1700/2000 6/7 90/95  这周学得不咋样......

参考资料

- ...

20145311 《Java程序设计》第5周学习总结的更多相关文章

  1. 20145311 《Java程序设计》第九周学习总结

    20145311 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1JDBC 16.1.1JDBC简介 JDBC(Java DataBase Connec ...

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

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

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

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

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

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

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

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. DOS cmd - how to ping a remote host with specified port

    You can use ping to test whether you can connect to a remote host: ping baidu.com ping 125.6.45.88 ( ...

  2. Java中迭代器实现的原理

    一. 引言 迭代这个名词对于熟悉Java的人来说绝对不陌生.我们常常使用JDK提供的迭代接口进行java collection的遍历: Iterator it = list.iterator();wh ...

  3. Sass-学习笔记【基础篇】

    最下边附结构图 在线编辑器网址如下:http://sassmeister.com/  注意编写的时候,符号千万别用了中文的:.:.....之类的,会报错,Sass也转换不成css. less和sass ...

  4. iOS 单例用法

    单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 1.单例模式的要点: 显然单例模式的要点有三个:一是某个类只能有一个实例: ...

  5. MySQL Server has gone away报错原因汇总分析(转自:http://cenalulu.github.io/mysql/mysql-has-gone-away/)

    原因1. MySQL 服务宕了 判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长 $ mysql -uroot -p -e "show global status l ...

  6. pandas将字段中的字符类型转化为时间类型,并设置为索引

    假设目前已经引入了 pandas,同时也拥有 pandas 的 DataFrame 类型数据. import pandas as pd 数据集如下 df.head(3) date open close ...

  7. SQL中 decode()函数简介(转载)

    今天看别人的SQL时看这里面还有decode()函数,以前从来没接触到,上网查了一下,还挺好用的一个函数,写下来希望对朋友们有帮助哈! decode()函数简介: 主要作用:将查询结果翻译成其他值(即 ...

  8. Mixed Content: The page at 'https://a.t.com/login' was loaded over HTTPS, but requested an insecure stylesheet 非全站https

    Mixed Content: The page at 'https://a.t.com/login' was loaded over HTTPS, but requested an insecure ...

  9. scrapy爬虫系列之三--爬取图片保存到本地

    功能点:如何爬取图片,并保存到本地 爬取网站:斗鱼主播 完整代码:https://files.cnblogs.com/files/bookwed/Douyu.zip 主要代码: douyu.py im ...

  10. Python开发【模块】:logging日志

    logging模块 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式 ...