20145229吴姗珊《Java程序设计》2天总结

教材学习内容总结

异常处理

1.使用try、catch
Java中所有错误都会被包装成对象,可以尝试(try)执行程序并捕捉(catch)代表错误的对象后做一些处理。使用了try、catch语法,JVM会尝试执行try区块中的程序代码,如果发生错误,执行程序会跳离错误发生点,然后比对catch括号中声明的类型,是否符合被抛出的错误对象类型,如果是就执行catch中的程序代码

2.使用throw,throws
当方法设计流程出现异常,不知道如何处理时,可以用throws FileNotFoundException抛出异常,让调用方法的客户端来处理。throw总是出现在函数体中,用来抛出一个异常。程序会在throw语句后立即终止。

3.使用finally
无论try区块中有无发生异常,若撰写有finally区块,则finally区块一定会被执行。如果程序撰写的流程先return了,而且也有finally区块,finally区块会先执行完后,再将值返回。例如下面这个范例会先显示finally,然后再显示1

4.自定义异常
自定义异常,使其可以继承原本有的各种异常,例如RuntimeException,这样可以在运行时,更加精确的帮我们找到是哪里出了问题

5.printStackTrace 和fillInStackTrace
如果想要让异常堆栈起点为重抛异常的地方,可以使用fillInStackTrace();方法,这个方法会重新装填异常堆栈,将起点设为重抛异常的地方,并返回Throwable对象。

6.java.lang.AutoCloseable
try with resources的对象必须实现AutoCloseable接口,该语法也可以同时关闭两个以上的对象资源,只要中间以分号隔开。在try的括号中,越后面撰写的对象资源会越早被关闭。

Collection与Map

  1. 收集对象的行为,像是新增对象的add()方法、移除对象的remove()方法等,都是定义在java.util.Collection中,既然可以收集对象,也要能逐一取得对象,这就是java.lang.Iterable定义的行为,它定义了iterator()方法返回java.util.Iterator操作对象,可以让你逐一取得收集的对象

2.List是一种Collection,作用是收集对象,并以索引方式保留收集的对象顺序,其操作类之一是java.util.ArrayList。

3.ArrayList和LinkedList,ArrayList的特点是线程不安全,但查询速度快,像排序时使用ArrayList便是利用了它速度快这一特点。LinkedList在操作List接口时,采用了链接结构,不会事先耗费内存,它的增删速度比较快

4.在Java中,跟顺序有关的行为,通常要不对象本身是Comparable,要不就是另行指定Comparator对象告知如何排序。JDK8在List上增加了sort()方法,可接受Comparator实例来指定排序方式

5.常用的Map操作类为java.util.HashMap与java.util.TreeMap,其继承自抽象类java.util.AbstractMap。建立Map操作对象时,可以使用泛型语法指定键与值的类型。如果使用TreeMap建立键值对应,则键的部分将会排序,条件是作为键的对象必须操作Comparable接口,或者是在建立TreeMap时指定操作Comparator接口的对象

6.以事先利用java.util.Map接口的操作对象来建立键值对应数据,之后若要取得值,只要用对应的键就可以迅速取得。判断键是否重复是根据hashcode()与equals(),所以作为键的对象必须操作hashcode()与equals()

7.如果想取得Map所有键,可以调用Map的keySet()返回Set对象,如果想取得Map中所有的值,则可以使用values()返回Collection对象。如果想同时取得Map的键与值,可以使用entrySet()方法,这回返回一个Set对象,每个元素都是Map.Entry实例,可以调用getKey()取得键,调用getvalue()取得值

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

1.关于堆栈追踪,没有理解清楚其之间的方法的用处,然后看书上的代码,并且自己尝试编译,就更清楚了。

2.println与printf不知道什么时候用哪一个,有时用错会出现错误,在这一周敲代码的过程中我发现println适用于输出没有参数的文字等,可以直接换行,而printf则可以输出任何带参数或不带参数的语句

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

清明小长假刚刚才从外地回来,看了看书,就总结了一下之前的内容,现在的博客主要集中在书上知识的理解,一点小充实吧,新的java学习又开始了,学习不能有懈怠,这周java继续努力

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 100/100 1/1 17/17
第二周 100/100 1/1 15/15
第三周 100/100 1/1 17/17
第四周 380/380 1/1 15/15
第五周 480/480 1/1 15/15

参考资料

最新文章

  1. jQ函数after、append、appendTo的区别
  2. 查看linux占用内存/CPU最多的进程
  3. LeetCode Day3
  4. Socket 学习(三).4 UDP 穿透 客户端与客户端连接
  5. 跟着刚哥梳理java知识点——注释(二)
  6. webpack 命令行 传入自定义变量
  7. 如何在Eclipse中彻底修改一个项目名称
  8. 依赖倒置原则(DIP)
  9. linux安装mysql图文教程
  10. vue.js 开发文档
  11. springboot 整合swagger-ui
  12. 安装unity3d多个版本共存
  13. CopyTransform
  14. 【BZOJ】【1089】【SCOI2003】严格n元树
  15. [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
  16. 理解webpack4.splitChunks之cacheGroups
  17. Scala编译器安装
  18. int 和Integer
  19. MyBatis 中 sqlmapconfig核心标签说明以及配置
  20. 怎样写APP计划书-20150313早读课

热门文章

  1. Android 图片查看器
  2. LINQ使用与并行
  3. Ubuntu 16.04主题美化和软件推荐
  4. mysql命令行导入和导出数据
  5. 今天学习Ibatis,花了我一个下午的时间,程序猿呀,你上点心吧
  6. erlang实现一个进程池 pool
  7. dynamic与var
  8. windows中wamp环境composer使用中openssl问题解决
  9. Java final关键字特点
  10. Java图形界面实战案例——实现打字母游戏