20182334 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结

教材学习内容总结

本周学习了第九章和第十章

第九章:学习了java面向对象语言的三大特性之一,也是最后一个大类:多态

所谓多态,在我自己的理解来看,就是相同类型的变量调用同一个方法时表现出来不同的行为特性。
那么在这里我想把三大特性再写一遍:封装继承多态

以下是我自己理解:

封装:把该隐藏的隐藏起来,把该暴露的暴露出来。
继承:子类拥有自己的属性和方法,即可以对父类进行扩展。
多态: 相同类型的变量调用同一个方法时表现出不同的行为特征。

第十章:学习了最后一部分的内容:异常

有几种导致抛出异常的几种情形:

  • 试图被0除
  • 数组下标越界
  • 没有找到指定的文件
  • 请求的I/O操作没能正常执行
  • 试图访问空引用所指的对象
  • 试图访问空引用所指的对象
  • 试图执行一个违反某类安全措施的操作

有三种方式处理异常:

  • 不处理异常
  • 在异常发生的地方处理
  • 在程序的其他地方处理异常
try-catch
try
{
    //想要运行的代码
}
catch(错误内容)
{
    //出现错误之后运行的程序
}

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

  • 问题1:不清楚何为java重写。
  • 问题1解决方案:参考java方法的重写,java重写是当父类功能无法满足子类的需求时,重写方法,重写的前提是必须存在继承关系。
  • 问题2:在接口处,有两个接口,分别是:Comparable接口和Iterator接口,在Comparable接口里,只有一个方法compareTo,我很好奇他们比的是什么东西,这里老师上课讲过,但是我根本想不起来。
  • 问题2解决方法:用JDK api索引搜索,发现compareTo是要自己定义比较的内容的,根据函数的值是负数、零还是正数,分别返回-1、0、1.

-问题3:
-问题3解决方案:

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

  • 问题1:在敲书上代码的时候,敲到“工资”一栏时,发现了一些问题:
  • 问题1解决办法:仔细翻书看书上的知识点,发现了一页上在讲这个问题:

  • 问题2:在volunteer里发现了类似的问题:

  • 问题2解决方案:在StaffMember里加入abstract pay,定义一个抽象的类,从而使volunteer的pay能够用起来。

==在写文件操作时,不懂得老师发的案例的很多方法,以至于很多都是自己利用百度或者JDK api搜索用法==

  • 问题3:不明白exists 和createNewFile方法的作用
  • 问题3解决方案:利用JDK api 搜索其用法:
  • 问题4:

content += new Struing(buffer,0,flag);


这串代码我不是很明白String在这里的方法是什么?

  • 问题4解决方案:利用jdk api 查到String在这里的方法是 将一个密文解码,0是第一个索引,flag是要解码的字节数。

  • 问题5:不知道read是什么方法?

  • 问题5解决方案:根据JDK api得知:从输入流中将byte.length个字节的数据读入一个byte数组中。

代码托管

上周考试错题总结

  • [x] 错题1:Which statement is completely true?
  • A .Java upcasts automatically, but you must explicitly downcast
  • B .Java downcasts automatically, but you must explicitly upcast
  • C .Java expects the user to explicitly upcast and downcast
  • D .Java will both upcast and downcast automatically
  • E .The rules for upcasting and downcasting depend upon whether classes are declared public, protected, or private

==解析==:向上转换是完全安全的——它是Java支持的单一继承结构的产物。相比之下,向下转换必须由程序员显式地完成。Java只在一个方向自动进行数据类型转换。上抛和下抛的规则不以任何方式依赖于使用的可见性修饰符。故答案选A。

  • [x] 错题2:Binary search can be used on unsorted data it will just perform more slowly.
  • A .true
  • B .false

==解析==:二叉搜索只在数据排序的情况下有效。二分搜索算法假设每对数据元素之间存在严格的升序或降序关系。没有这个顺序,二分查找就不能正常工作。故答案选B。

  • [x] 错题3:Which of the following messages passed to the String str could throw a StringIndexOutOfBoundsException?
  • A .str.length( )
  • B .str.charAt(2);
  • C .str.replace('a', 'A');
  • D .str.equals(str);
  • E .any of the above could throw a StringIndexOutOfBoundsException

==解析==:如果字符串方法的参数引用了字符串中超出字符串界限的位置(例如,一个负整数或一个大于或等于字符串中字符数的整数),则抛出StringIndexOutOfBoundsException。这可以在charAt或子字符串方法中发生。故答案选B.

  • [x] 错题4:NullPointerException and ArithmeticException are both derived from which class?
  • A .Error
  • B .Exception
  • C .RuntimeException
  • D .IllegalAccessException
  • E .CheckedException

==解析==:这两个异常都是RuntimeException的子异常,而RuntimeException本身就是Exception的子异常。Error是一个可抛出的对象,与Exception不同,IllegalAccessException和CheckedException是Exception的子对象,而不是RuntimeException的子对象。故答案选C.

  • [x] 错题5:In order to have some code throw an exception, you would use which of the following reserved words?
  • A .throw
  • B .throws
  • C .try
  • D .Throwable
  • E .goto

==解析==:如果(score < 0)抛出新的IllegalTestScoreException("Input score " + score + " is negative");故答案选A.

  • [x] 错题6:The difference between a checked and an unchecked exception is
  • A .checked exceptions need not be listed in a throws clause
  • B .unchecked exceptions must be listed in a throws clause
  • C .neither kind of exception follows the rules of exception propagation
  • D .an unchecked exception requires no throws clause
  • E .a checked exception always must be caught by a try block; an unchecked exception does not

==解析==:选中的异常必须被捕获,或者必须在一个抛出子句中列出。未检查的异常不需要抛出子句。这两种异常都遵循异常传播的规则。故答案选D.

点评过的同学博客和代码

  • 本周结对学习情况
    • 20182321
    • 结对照片

    • 结对学习内容
      • 共同完成File文件操作
      • 共同解决书上出现的问题。
  • 上周博客互评情况

其他(感悟、思考等)

学习到此,java已经结束了,但我感觉自己没有学到很多东西,学的很浅,很薄,像是混沌着学过来的,很难受,可能是学时压缩的缘故,两门大课就这样被压缩成一节课,苍天饶过谁!真的觉得自己没学到什么东西 ,但也只能面对接下来的数据结构,关于Android方面,我问了下老师,得知,只学Android的浅层,都是浅层,没有深入,这种学习生活,不是我想要的,不知道自己该怎么处理自己的矛盾。

学习进度条

目标5000行30篇400小时
第一周212/2122/217/17
第二周132/3442/417/34
第三周689/10331/523/67
第四周664/16972/720/87
第五周586/22832/920/107
第六周500/27831/1026/133
  • 计划学习时间:29小时

  • 实际学习时间:26小时

  • 改进情况:心理承受能力越来越好,碰到难题不会怕,而是会慢慢啃他。

参考资料

02-13 09:40