20172313 2017-2018-2 《程序设计与数据结构》第九周学习总结

20172313 2017-2018-2 《程序设计与数据结构》第九周学习总结

教材学习内容总结

  1. 初步学习异常,了解异常和错误的区别。
  2. 异常处理的几种方法。
  3. 若是程序不处理异常,则将非正常地终止执行,并产生关于描述在何处发生什么异常的信息。
  4. 能够用“try-catch”语句对抛出的异常进行捕获,后能够有一个可选的finally语句。
  5. 若是在一个异常的发生处没有捕获和处理该异常,控制将马上返回到产生该异常的方法的上一级调用方法。
  6. 能够从Exception类或它的后代类派生一个新类来定义本身的异常。
  7. 异常分为可检测异常与不可检测异常。
  8. 初步学习I/O流的部份内容和I/O异常。
  9. 初步学习递归思想,了解递归的定义包括非递归定义和递归定义两部分。
  10. 学习直接递归和间接递归,并经过几个示例来加深理解,初步利用递归思想进行递归编程。

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

  • 问题1:在学习I/O流的时候,提到过BUfferedInputStream能提升读取速率额,在查询了API后,上面有这样一句解释建立一个内部缓冲区数组。在读取或跳过流中的字节时,可根据须要从包含的输入流再次填充该内部缓冲区。 但仍是不太理解能加快读取速率的原理究竟是什么。
  • 问题1解决方案:在查询了资料之后,有了必定的理解。首先要理解缓冲区的概念:一片内存存储空间,在读写数据的程序须要以前,数据存储在这里,这样就不用每次去物理硬盘上的数据源取了。 而缓冲输入流(BufferedInputStream)又是什么呢?
  • 缓冲输入流(BufferedInputStream):顾名思义,是在缓冲区取数据的输入流(InputStream)。输入流都是在硬盘数据源去数据的。要从缓冲区取数据,那缓冲区里面要有数据的,对吧?谁写进去呢?固然是输入流(InputStream)了,因此要创建缓冲输入流(BufferedInputStream),必须指定一个输入流。html

  • 问题2:刚开始学习异常处理的时候,不是很明白为何能够对异常根本不进行处理,异常既然是程序中出现的问题或非正常状况,不进行处理不会致使程序出错吗?
  • 问题2解决方案:对于不可检测的异常,程序中能够选择捕获处理,也能够不处理。这些异常通常是由程序逻辑错误引发的,程序应该从逻辑角度尽量避免这类异常的发生。
运行时异常:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中能够选择捕获处理,也能够不处理。这些异常通常是由程序逻辑错误引发的,程序应该从逻辑角度尽量避免这类异常的发生。运行时异常的特色是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即便没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译经过。
非运行时异常 (编译异常):是RuntimeException之外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,若是不处理,程序就不能编译经过。如IOException、SQLException等以及用户自定义的Exception异常,通常状况下不自定义检查异常。

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

  • 问题1:在作编程项目pp11_2的时候,对抛出的异常进行捕捉,但IEDA提示个人代码错误,按照提示进行修改的话会自动把个人“try-catch”语句给删掉。 java

  • 问题1解决方案:我是按照书上的例题写的,语法上不该该存在错误才对。我仔细思考了一下找到了问题所在,书上的例题抛出的异常是设定好的,而个人代码中的异常是本身定义的,因此在运行的时候不知道是何时抛出异常,对代码修改以下,问题就得以解决了。 git

  • 问题2:在作编程项目pp12_1的时候,对代码进行编译运行,提示我超出了索引的范围。 编程

  • 问题2解决方案:利用Debug对错误进行排除发现是本身把右边的索引范围给写错了(。ŏ_ŏ),改过以后也就没什么问题了~ 数组

代码托管

上周考试错题总结

  • 错题1: Can a program exhibit polymorphism if it only implements early binding? A . Yes, because one form of polymorphism is overloading B . No, because without late binding polymorphism cannot be supported C . Yes, because so long as the programs uses inheritance and/or interfaces it supports polymorphism D . Yes, because early binding has nothing to do with polymorphism E . none of the above
  • 解析:虽然继承和接口支持多态,但只有在具备后期绑定时才会这样作。 可是,重载是多态的一种形式(方法)名称,多个主体,只要程序使用重载,多态就在使用中。
  • 错误缘由:课本上和其余资料上的定义不太一致,有些资料上把方法重载也当作一种多态的实现。
  • 错题2: A class reference can refer to any object of any class that descends from the class. A . true B . false
  • 解析:这是一种使用类名来声明引用变量的多态函数。
  • 错误缘由:这就是对概念的理解不清了,之后记牢...

结对及互评

  • 博客中值得学习的或问题:
    • 排版精美,对于问题研究得很细致,解答也很周全。
  • 代码中值得学习的或问题:
    • 代码写的很规范,思路很清晰,继续加油!

点评过的同窗博客和代码

  • 本周结对学习状况

其余

我从不以为不忘初心本以是要人努力不放弃,而是要坚守本心,不要忘记当初是为何开始,才能获得最终想要的结果。 If you want to feel secure, do what you already know how to do. But if you want to grow, go to the cutting edge of your competence, which means a temporary loss of security. So… whenever you dont quite know you are doing. Know that you are growing.安全

若想要感受安全无虞,去作你原本就会作的事, 若想要真正成长,那就要挑战能力的极限, 也就是暂时地失去安全感。 因此……当你不能肯定本身在作什么时, 起码要知道,你在成长。 — Mark Twain数据结构

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 126 1/1 20/20
第二周 388/466 1/2 15/35
第三周 706/1162 1/3 17/52
第四周 1104/2266 1/4 20/72
第五周 1126/3392 1/5 15/87
第六周 906/4298 1/6 20/107
第七周 1233/5531 1/7 20/127
第八周 1391/6922 1/8 24/151
第九周 420/7342 1/9 20/171
  • 计划学习时间:20小时函数

  • 实际学习时间:20小时学习

  • 改进状况: 看到周围的同窗都在认真的学习Java,本身在其中也受到了一些感染,这周对Java的学习自我感受良好,这周所学习的课本上的内容不算太难,难的是利用递归思想来独自完成一些递归编程,在这周的测验和课下的代码编写中也体现出来了一些问题,仍是存在着考虑不到位,编写代码时不细心等问题。对有些概念的理解混淆依然存在,但愿能在之后的学习生活中改正这些错误,弥补这些问题,可以继续进步。ui

参考资料

相关文章
相关标签/搜索