20145337 《Java程序设计》第五周学习总结

教材学习内容总结

第八章

  • JAVA中的所有错误都会被包装成对象,如果你愿意,可以尝试执行并捕捉代表错误的对象后做一些处理。使用了trycatch语法,JVM会尝试执行try区块中的程序代码,如果发生错误,执行流程会跳离错误发生点,然后比对catch括号中声明的类型。是否符合被抛出的错误对象类型,如果是的话,就执行catch区块中的程序代码。
  • 错误会被包装为对象,这些对象都是可抛出的,因此设计错误对象都继承自java.lang.Throwable类,Throwable定义了取得错误信息、堆栈追踪等方法,它有两个子类:java.lang.Errorjava.lang.Exception
  • Error与其子类实例代表严重系统错误,例如硬件层面错误、JVM错误或内存不足等问题。虽然也可以使用try、catch来处理Error对象,但并不建议,发生严重系统错误时,JAVA应用程序本身是无力处理的。
  • 如果抛出了Throwable对象,而程序中没有任何catch捕捉到错误对象,最后由JVM捕捉到的话,那JVM基本处理就是显示错误对象包装的信息并中断程序。
  • 操作对象的过程中如果会抛出受检异常,但目前环境信息不足以处理异常,所以无法使用try、catch处理时,可由方法的客户端依据当时调用的环境信息进行处理。为了告诉编译程序这个事实,必须使用throws声明此方法会抛出的异常类型或父类,编译程序才会让你通过编译。
  • 无论try区块中有无发生异常,若撰写有finally区块,则finaly区块一定会被执行完后,再将值返回。

    第九章

  • 收集对象的行为,像是新增对象的add()方法、移除对象的remove()方法等,都是定义在java.util.Collection中。既然可以收集对象,也要能逐一取得对象,这就是java.util.Iterator操作对象,可以让你逐一取得收集的对象。
  • 数组在内存中会是连续的线性空间,根据索引随机存取时速度快,如果操作上有这类需求时,像是排序,就可以Arraylist,可得到较好的速度表现。
  • LinkedList在操作List接口时,采用了链式结构,不会事先耗费内存,想要指定随机存取对象时,会比较没有效率,链接的每个元素会参考下一个元素,这有利于调整索引顺序。
  • 一般常用Properties的setProperty()指定字符串类型的键值,getProperty()指定字符串类型的键,取回字符串类型的值,通常称为属性名称与属性值。

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

  • 代码一
    ```
    package cc.openhome;

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.util.Scanner;

    public class FileUtil2 {
    public static String readFile(String name) throws FileNotFoundException {
    StringBuilder text = new StringBuilder();
    try(Scanner console = new Scanner(new FileInputStream(name))) {
    while (console.hasNext()) {
    text.append(console.nextLine())
    .append('\n');
    }
    }
    return text.toString();
    }
    }

  • 代码二
    package cc.openhome;
    public class FinallyDemo {
    public static void main(String[] args) {
    System.out.println(test(true));
    }

    static int test(boolean flag) {
    try {
    if(flag) {
    return 1;
    }
    } finally {
    System.out.println("finally...");
    }
    return 0;
    }
    }
    ```

    本周代码托管截图


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

这周因为把任务堆到了周末,所以比较赶,看不懂的代码没来得及问。希望好好利用假期把不懂的地方梳理一下。对于现阶段的我来说,对代码的熟悉还是不够,会尽快掌握,努力跟上大家的进度。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20 了解JAVA环境
第二周 300/500 2/4 18/38 编写HelloWorld
第三周 500/1000 3/7 22/60 了解类、封装
第四周 300/1300 2/9 30/90 继承与多态
第五周 200/1300 2/9 30/90 了解异常处理

参考资料

最新文章

  1. [推荐]WebService开发知识介绍
  2. oGrid 初探
  3. U5398 改数(num)
  4. C++ Generate Rand Number Array by "srand()" 生成随机数
  5. 【CSS3】---块状元素、内联元素(又叫行内元素)和内联块状元素
  6. Terrible Sets
  7. Microsoft Visual Studio 2010 Service Pack 1(exe)
  8. Windows 系统版本判断
  9. List的输出方法
  10. Java经典案例之-“分解质因数”
  11. 【C++】指针与引用的区别
  12. docker学习之--日常命令
  13. 关于JetBrains CLion 激活 (CLion License Activation)的解决办法,带hosts详细修改
  14. 原生拖拽js利用localstorage保存位置
  15. CDRAF之Service mesh
  16. oracle导出序列的几种办法
  17. GUI相应鼠标事件
  18. centos 7 免密登录
  19. tensorflow读取数据
  20. 图的最短路径---迪杰斯特拉(Dijkstra)算法浅析

热门文章

  1. requireJS的使用_API(1)
  2. JSON转javabean(pojo)利器
  3. Angular跨域
  4. struts2总结二:第一个简单的struts2程序
  5. UE4在C++中使用OnComponentBeginOverlap之类的时间
  6. 每天一个linux命令--退出<符号
  7. c#如何使用正则表达式ZZ
  8. jqgrid在colModel中多次调用同一个字段值
  9. POJ-A Simple Problem with Integers
  10. HDU 4503 湫湫系列故事——植树节(单色三角形)