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

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

    教材学习内容总结

    本周的学习包括两章内容,分别为异常和递归。

    异常

    • 错误和异常都是对象,代表非正常情况或者无效处理。
    • 异常抛出时所输出的信息,提供了方法调用堆栈踪迹。
    • 每一个catch子句处理一种try语句块中抛出的异常。
    • 无论try语句块正常退出还是又是抛出异常而退出,都将执行finally子句。
      https://www.ibm.com/developerworks/cn/java/j-lo-finally/index.html)
    • 如果在一个机场的发生处没有捕获和处理该异常,则该异常将传递给上级调用方法。
    • 程序员应该细心地考虑处理异常的时机和位置,否则最好不要做异常处理。
    • 可由Exception类或他的后代类派生一个新类来定义一个新的异常。
    • 流是一个有序的字节序列,它可以以用作输入源或作为输出目标。

    递归

    • 递归是一种方法能够调用自己的编程技术,掌握递归编程的关键是能以递归的思想考虑问题。
    • 任何一个递归定义中必须称为基本情况的非递归定义部分,才能使递归最终结束。
    • 每一次对方法的递归调用,都会创建新的局部变量与参数。
    • 详细的跟踪递归处理过程,可以深入剖析递归问题求解问题的方式。
    • 汉诺塔解法具有指数复杂性,效率非常低,但是该接发的实现却出奇的简短和精炼。

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

    • 问题1:IO的理解。

    • 问题1解决方案:如书上所说,Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。
      下附Java中IO流的所有类

      IO流还有许多东西需要去慢慢学习,对于很多方面都有概括的。

    • 《Java中IO总结》

    • 问题2: 递归与迭代的比较

    • 问题2解决方案:对于某些问题,递归是最精炼和适当的解法,但对于其他的问题,递归则不如迭代解法直观。
      递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出.

    //这是递归  
    int funcA(int n)  
    {  
        if(n > 1)  
           return n+funcA(n-1);  
        else   
           return 1;  
    }  
    //这是迭代  
    int funcB(int n)  
    {  
        int i,s=0;  
        for(i=1;i<n;i++)  
           s+=i;  
        return s;  
    }  
    

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

    • 问题1:在做pp11.1的时候,无论我输入多长的字符串他都显示超过
    • 问题1解决方案:当时反复检查代码觉得并没有问题啊,然后使用了代码调试一步步进行下去发现由于在if语句后加了一个;,导致throw语句一直能够进行,所以才会一直出现显示超出的提示。

    代码托管

    上周考试错题总结

    • 问题1:We compare sorting algorithms by examining
      A the number of instructions executed by the sorting algorithm
      B the number of instructions in the algorithm itself (its length)
      C the types of loops used in the sorting algorithm
      D the amount of memory space required by the algorithm
      E whether the resulting array is completely sorted or only partially sorted
      分析:这道题考到的知识点为:不同的排序算法在执行时需要不同数量的指令。所以我们通过检查排序算法执行的指令数,来比较排序算法。所以应该选a。

    • 问题2:Polymorphism is achieved by
      A . overloading(重载)
      B . overriding(重写)
      C . embedding(嵌入)
      D . abstraction(抽象)
      E . encapsulation(封装)
      分析:这道题考查的是多态性是通过什么实现,我选择的是的抽象,而答案是b重写:重写提供了多态性,因为适当的方法是根据当前被引用的对象而调用的,所以应该是重写实现多态性。

    结对及互评

    点评模板:

    • 博客中值得学习的或问题:
      • 严域俊同学在进行异常和错误的区别时进行了详细的描述并配了图
      • 同时在根据自己代码中出现的问题又一次进行了查询和解答。
    • 代码中值得学习的或问题:
      • 这周我两就四则运算的最后结合部分进行了修改,但还是存在很多问题,我两也在不断地学习与探索过程中学到了很多,也希望能够按时完成四则运算吧。
      • commit依旧很详细,有条理性。

    点评过的同学博客和代码

    • 本周结对学习情况
      • 20172333
      • 结对学习内容
        • 学习第十一和十二章pp项目。
        • 学习异常和递归的具体内容
        • 对于IO操作的共同探讨
        • 继续完善四则运算的的项目。

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

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

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 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/13 30/212
    第九周 656/5980 2/15 20/232

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

    • 计划学习时间:20小时

    • 实际学习时间:20小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    you have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar(255), sort integer not null
    mysql导出数据到excel的两种方式
    java8 foreach不能使用break、countinue
    学习rabbitmq
    shell脚本基础
    编程基础;程序的执行方式;编程基本概念
    定制vim的工作特性
    使用多个“窗口”
    多文件模式
    可视化模式
  • 原文地址:https://www.cnblogs.com/linanlalala/p/9033002.html
Copyright © 2011-2022 走看看