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

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数组中。

代码托管

上周考试错题总结

  • 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。

  • A .true
  • B .false

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

  • 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.

  • A .Error
  • B .Exception
  • C .RuntimeException
  • D .IllegalAccessException
  • E .CheckedException

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

  • A .throw
  • B .throws
  • C .try
  • D .Throwable
  • E .goto

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

  • 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/212 2/2 17/17
第二周 132/344 2/4 17/34
第三周 689/1033 1/5 23/67
第四周 664/1697 2/7 20/87
第五周 586/2283 2/9 20/107
第六周 500/2783 1/10 26/133
  • 计划学习时间:29小时

  • 实际学习时间:26小时

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

参考资料

posted on 2019-10-15 21:25  cistineup  阅读(154)  评论(1编辑  收藏  举报