zoukankan      html  css  js  c++  java
  • 20172330 2017-2018-1 《Java程序设计》第八周学习总结

    学号 2017-2018-1 《程序设计与数据结构》第八周学习总结

    教材学习内容总结

    这一章主要是对多态性的学习:

    由继承实现多态性

    • 多态性引用能够随时间变化指向不同类型的对象。
    • 对于多态性引用,方法调用与方法定义代码的绑定在运行时执行。
    • 一个引用变量可以指向有继承关系的任何类的任何对象。
    • 实际将调用的方法版本取决于对象的类型而不是引用变量的类型。
    • 多态性的实质是,每个类很清楚自己如何完成一个指定的行为,并且从某种意义说,每个类的行为都是相同的,多态制允许具有一致性但又独特的方式处理类似的对象。

    利用接口实现多口实现多态性

    • 接口名可以声明对象引用变量。
    • 一个接口引用变量可以指向实现该接口的任何类的任何对象。
    • 方法的参数可以是多态性的,,使得方法所接受的参数具有灵活性。
    • 以多态性方式实现的排序算法可对任何一组可比较的对象排序。
    • 学会使用排序法和插入法。
    • 多态性允许用一致性的方法实现不一致的行为。
    • 学会使用线性搜索和二分搜索。

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

    • 问题1:排序算法的比较
    • 问题1解决方案:如书上所说,选择法排序和插入法排序实质上有同等的效率。但是选择法排序容易理解,大多数情况下能满足需求,并且每个值一次性准确的移动到自己的最终位置,所以优于插入法。

    具体举例如下:

    使用选择和插入排序法,写出第3次排序的结果:3  1 9  3 6 2 10 
    选择排序法:
                       1 2 3 9 6 3 10
    
    插入排序法:
                       1 3  3 9 6 2 10。
    
    • 问题2: 搜索当方法的比较
    • 问题2解决方案:就搜索方法而言,二分法远比线性搜索的效率高,但二分搜索要求数据已经经过排序。
      如果数据排序相对容易或者数据的搜索量非常大,则使用二分搜索较合适,但是线性搜索的实现相当简单,若长远的看守所的效率不是重要问题时,线性搜索则可能是最佳的选择。
      线性查找可以针对任何数组,将数组中的每项依次遍历出来之后,与所要查找项对比。
      消耗时间也是不规律的,可能查找项处于数组的第一位,也可能处于数组的最后一位。还有可能数组中完全不存在需要查找的项目。

    二分查找法,针对有序数组使用。
    因为数组已经有序排列,可以通过将数组从中间分割,将中间项与所需查找项对比;然后再根据对比结果,再次向上或者向下,寻找中间项对比,直至完成查找。
    而且,对于查找最开始,可以通过与第一项和最末项的对比,确定查找项是否处于此数组中。

    代码托管

    上周考试错题总结

    • 1.All classes in Java are directly or indirectly subclasses of the ________ class.
      A Wrapper
      B String
      C Reference
      D this
      E Object
      分析:Java要求所有类都有父类。如果一个类不扩展另一个类,那么它在默认情况下扩展了对象类。对象类是Java中其他类的父类或父类。所以obiect是作为其他类的父类的。

    结对及互评

    点评模板:

    • 博客中值得学习的或问题:
      • 图片和文字相结合,方便理解。
      • 增加了博客中的目录,方便查看,同时样式进行了更新,显得更加美观
      • 阅读了许多资料,使得博客更有说服力。
    • 代码中值得学习的或问题:
      • 我两在做本周的四则运算中,严域俊同学就编写题目输出花费了大量时间,和我也讨论了许多编写类的方法,这种共同协作的态度我们以后一定会继续加强。
      • commit依旧很详细,有条理性。

    点评过的同学博客和代码

    • 本周结对学习情况
      • 20172333
      • 结对学习内容
        • 学习第十章pp项目。
        • 学习继承的具体内容
        • 一起做四则运算的的项目。

    其他(感悟、思考等,可选)

    这一周在做课后项目时问题不大,但是在做是四则运算的编写时遇到了很多问题,需要继续努力研究。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 180/180 2/2 20/25
    第二周 312/414 2/4 20/45
    第三周 557/971 1/5 25/70
    第四周 1217/2242 2/7 44/114
    第五周 734/2976 1/8 24/138
    第六周 523/3509 1/9 20/158
    第七周 697/4206 1/10 24/182
    第八周 1118/5324 3/113 30/212

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:20小时

    • 实际学习时间:24小时

    • 改进情况:

    这周对于课后练习做的没有那么吃力,但还是存在一些对于类的编写的问题,希望继续加油。

    参考资料

  • 相关阅读:
    HDU 5818 Joint Stacks (优先队列)
    POJ 3169 Layout (差分约束系统)
    HDU 4370 0 or 1 (最短路+最小环)
    LightOJ 1074 Extended Traffic (最短路spfa+标记负环点)
    HDU 1142 A Walk Through the Forest (求最短路条数)
    力扣71——简化路径
    力扣73——矩阵置零
    ThreadLocal的进化——TransmittableThreadLocal
    ThreadLocal的进化——InheritableThreadLocal
    Java——内部类详解
  • 原文地址:https://www.cnblogs.com/linanlalala/p/8982099.html
Copyright © 2011-2022 走看看