zoukankan      html  css  js  c++  java
  • 20182311 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结

    正文

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

    教材学习内容总结

    教材第九章

    1.多态与后绑定:多态是指一个引用变量在不同时刻指向不同对象。多态实现的基础是后绑定(late/dynamic binding),即运行时才确定对象和方法。对象的类型,而不是引用的类型决定绑定哪个方法。
    2.通过继承实现多态:指向某个类的引用变量,可以指向这个类及继承于他的任意子类的任何对象。可以把父类对象赋给子类引用,但需要进行显示转换(类型强转),而且可能出现问题。
    3.接口:一组抽象方法。接口可以多重继承。
    4.接口实现多态:接口名可用来声明引用变量。调用接口变量时只能调用接口中定义的方法,因为编译器只能判定对象是接口类的,子类自定义的方法无法响应。

    教材第十章

    1.异常与异常处理:

    • 异常是一个对象,与错误类似。异常能被抛出、捕获,必要时进行处理。
    • 异常处理三种方式:
      • 不处理:程序非正常终止,打印错误信息和调用栈跟踪
      • 在异常产生的地方处理:捕捉异常-try catch
      • 在程序的其他地方处理:抛出异常-throws throw

    2.try catch语句:

    • try语句中出现异常,直接转向与第一个异常匹配的catch子句。执行完子句中的语句后,控制转向try-catch之后的语句,try中部分语句可能未被执行。
    • finally:不管是否出现异常,都会被执行。

    3.异常传播:如果没有在异常产生的地方捕获及处理他,异常将会传播给调用的方法,直到得到处理或程序非正常退出。

    4.异常类的层次:继承关系可以跨越包的边界。异常的高层类定义在java.lang包,众多子类在其他包中。我们可以通过继承Exception及其派生类定义一个新的异常。

    5.免检异常与必检异常:只有RuntimeException及其后代类对象是免检异常,不需要throws子句。

    6.I/O异常

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

    • 问题1:怎么理解“抛出”异常这个概念?

    • 问题1解决方案:一个方法没有能力处理异常,将其从调用层次向上传递,谁调用这个方法,这个异常就由谁来处理。相当于“有问题找家长”的责任转移。异常必须被处理,要么捕获要么抛出。若是在主函数内抛出异常,并且没有try catch,将直接导致程序的中断,因为主函数是调用层次的最高一级,异常不会被捕获。

    • 问题2:throws和throw关键字的作用?区别?

    • 问题2解决方案:

      • 使用throws声明的方法表示此方法不处理异常,而由系统自动将所捕获的异常信息“抛给”上级调用方法。使用throws声明能实例化异常类对象,人为抛出异常。
      • throw 在方法体内使用,throws 函数名后或者参数列表后方法体前。
      • throw 强调动作,而throws 表示一种倾向、可能但不一定实际发生。

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

    • 问题1:将使用split方法切割后的字符串返回值赋给一个数组,超出数组初始化容量,但并未出现IndexOutOfBoundsException.

    • 问题1解决方案:一开始感到很奇怪,因为书上写数组length一旦确定不能改变,后来有看到对象数组里可以自己定义私有方法实现扩容。但这个问题的原因在于,使用split()切割后返回的值是arraylist格式的,Java中arraylist具有自动扩容的功能,所以永远不用担心容量问题。

    • 问题2:如何实现try catch的无限循环?

    • 在try catch外一层设置无限循环,使用一个布尔数控制循环的终止。当程序捕捉到格式错误时把布尔数改为false,直到输对改为true,跳出循环。

    • 问题3:PP9_3中需要用到加密算法,发现上一次对RSA加密算法过程不是很清楚,导致修改代码的时候丢三落四。

    • 问题3解决方案:重新理解了RAS的加密过程。由A生成一对公钥和私钥,A将公钥发给B,B用公钥对信息加密传给A,A用私钥解密。若A需要进行回复,用私钥加签形成签名与消息一起传给B,B用公钥验签。

      • 公钥公开透明,私钥私有
      • 加密防信息泄露,签名防假冒抵赖
      • 公钥和私钥是成对存在,可以互相用来加解密
      • 总结:公钥加密、私钥解密、私钥签名、公钥验签。
    • 问题4:如何实现排序?Compareto实现排序的机制?

    • 问题4解决方案:数组和列表均可以实现排序。Arrays.sort()和Collections.sort(),根据需要选择。需要注意的是,使用该方法需要重写一个的、Compareto方法,该方法的类要继承于comparable接口。

    • 机制:调用Arrays.sort()最后会通过Comparable接口的compareTo()对数组进行比较排序。return 1、-1、0,可以分别理解为,顺序后移、前移和不变。

    代码托管

    第九章 第十章

    上周考试错题总结

    • 错题1:Which of the following is true regarding Java classes?
      A .All classes must have 1 parent but may have any number of children (derived or extended) classes
      B .All classes must have 1 child (derived or extended) class but may have any number of parent classes
      C .All classes must have 1 parent class and may have a single child (derived or extended) class
      D .All classes can have any number (0 or more) of parent classes and any number of children (derived or extended) classes
      E .All classes can have either 0 or 1 parent class and any number of children (derived or extended) classes
    • 反思:正确答案:A。所有的类都直接或间接继承于Object类,所以每个类一定有一个父类。子类数量不限。
    • 错题2:Using the reserved word, super, one can
      A .access a parent class'constructor(s)
      B .access a parent class'methods and instance data
      C .access a child class'constructor(s)
      D .access a child class'methods and instance data
      E .none of the above
    • 反思:正确答案:正确答案:E。答案应该是AB的组合,而不是B,所以哪个都不正确。
    • 错题3:Interface classes cannot be extended but classes that implement interfaces can be extended.
      A .true
      B .false
    • 反思:正确答案:B。错误理解了继承和实例化的概念。任何类都可以被继承,无论是接口、实现接口还是抽象类,只有被final过的不能被拓展改变。

    结对及互评

    点评过的同学博客和代码

    感悟

    感觉还是学得太表面了,深层次的算法啥的都还没学。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 10000行 30篇 400小时
    第一周 246/246 2/2 30/30 初步掌握linux命令、java小程序和jdb调试
    第二周 73/319 3/3 30/60
    第三周 906/1225 3/6 20/80
    第四周 748/1973 2/8 20/100
    第五周 849/2822 2/10 20/120
    第六周 962/ 3784 2/12 30/150

    参考资料

  • 相关阅读:
    SQL Server 索引基本概念与优化
    将Heap RID转换成RID格式
    有关DeadLock的文章列表
    sql报字段过大的错误解决方法
    查询当天数据(mysql)
    cookie和session的区别
    get和post的区别
    jq点击切换按钮最简洁代码
    js提示确认删除吗
    thinkphp解决分页后序列号自增的问题
  • 原文地址:https://www.cnblogs.com/lengchong/p/11666397.html
Copyright © 2011-2022 走看看