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.
点评过的同学博客和代码
其他(感悟、思考等)
学习到此,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小时
-
改进情况:心理承受能力越来越好,碰到难题不会怕,而是会慢慢啃他。