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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20145311 《Java程序设计》第5周学习总结相关的知识,希望对你有一定的参考价值。

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周学习总结的主要内容,如果未能解决你的问题,请参考以下文章

20145311王亦徐《JAVA程序设计》课程总结

20145311 《信息安全系统设计基础》第六周学习总结

20145311 《信息安全系统设计基础》第十二周学习总结

20145311 《信息安全系统设计基础》第二周学习总结

20145311 《信息安全系统设计基础》第一周学习总结

20145311 《信息安全系统设计基础》第十周学习总结