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小时

  • 改进情况:

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

参考资料

20172330 2017-2018-1 《Java程序设计》第九周学习总结的更多相关文章

  1. 201521123027 <java程序设计>第九周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2.书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什 ...

  2. 20145220java程序设计第九周学习总结

    20145220java程序设计第九周学习总结 教材学习内容总结 JBDC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商对接口直接操作,开发人员无须接触底层数据可驱动程序的差异 ...

  3. 201771010134杨其菊《面向对象程序设计java》第九周学习总结

                                                                      第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...

  4. 201521044152<java程序设计>第一周学习总结

    本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...

  5. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  6. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  7. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

  8. 马凯军201771010116《面向对象与程序设计Java》第九周学习总结

    一.理论知识部分 异常.日志.断言和调试 1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行. 2.Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置. 3 ...

  9. 201521123063 JAVA程序设计 第二周学习总结

    1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...

  10. 《Java》第九周学习总结

    下载mysql 选择mysql的管理软件 idea可以直接连接 然后用库运行程序,但是没有截图,,因为想在navicat上试试,可惜速度太慢了 打开idea又很慢,所以明天再更新

随机推荐

  1. Kali Basic Configuration

    1:Kali Version root@kali-node01:~# cat /etc/os-release PRETTY_NAME="Kali GNU/Linux Rolling" ...

  2. SQL Server 2012 - 多表连接查询

    -- 交叉连接产生笛卡尔值 (X*Y) SELECT * FROM Student cross Join dbo.ClassInfo --另外一种写法 SELECT * FROM Student , ...

  3. obfuscator-llvm Xcode集成配置

    一.简介 obfuscator-llvm 是一个开源的代码混淆编译器,能够使编译出来的文件添加垃圾代码和各种跳转流程,给逆向分析者增加难度. 二.编译 (1) 下载 目前最新版的是4.0的,下载地址是 ...

  4. 移动端利用canvas画布简单实现刮刮乐效果

    为了研究canvas一些属性简单实现的一个小效果  代码样式不太规范 随手写的 请问喷 初学者可以看下 css代码 <style> * { margin: 0; padding: 0; } ...

  5. 基于TCP/IP的局域网聊天室---C语言

    具备注册账号,群聊,查看在线人员信息,私发文件和接收文件功能,因为每个客户端只有一个属于自己的socket,所以无论客户端是发聊天消息还是文件都是通过这一个socket发送, 这也意味着服务器收发任何 ...

  6. 利用谷歌浏览器断点调试js反向解析,解密

    目标网站:https://www.aqistudy.cn/html/city_detail.html 点击按钮才会去后台请求数据, 第一步:将click打开, 第二步:找个后台请求数据的url   h ...

  7. css dropdown menu

    <ul> <li class="left">abc</li> <li class="middle" id=" ...

  8. APP如何发布到Google play 商店

    APP如何发布到Google play 商店?以及有哪些需要注意的点 2015-05-13 10:07 19773人阅读 评论(1) 收藏 举报  分类: iPhone游戏开发(330)  链接:ht ...

  9. WPF的退出

    很多时候,会自己写退出程序的代码. 比如,先显示登录框(LogIn),成功后隐藏它,并显示一个主窗体(MainWin),或者外部还调用了其他App,当你关闭MainWin不一定会直接退出整个程序的. ...

  10. 成都Uber优步司机奖励政策(1月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...