• 学号20155308 2016-2017-2 《Java程序设计》第5周学习总结


    学号20155308 2016-2017-2 《Java程序设计》第5周学习总结

    教材学习内容总结

    8.1 语法与继承架构

    使用try...catch

    • 注意多个catch一定把父类放后面
    • 异常架构
    1. Error及其子类写程序不用处理,最多留个日志
    2. Java异常处理是要处理Exception类及其子类(Checked Exception)
    3. RuntimeException及其子类也不用处理(Unchecked Exception)
    4. 产生RuntimeException的问题在调用代码
    5. 参考Design by Contract (DBC) 契约式设计
    6. Multi-catch:类之间不能有继承关系
    
    • API时一定对上层的类好好研究,学习,再学习和应用子类时就比较容易了
    • catch or throw?
      • throws:自己无法处理,用在方法声明
      • throw:方法中抛出Checked Exception,方法声明中必须有throws
    1. 自定义异常
    2. 异常堆栈
    3. printStackTrace
    4. 善用堆栈追踪错误
    5. 代码中不要私吞异常
    6. 不要错误处理异常
    7. 处理时不要显示错误信息
    

    8.2异常与资源管理

    • 使用finally
    • try-catch-finally
    • try with resources
    • 关闭多个资源时用分号分隔
    • java.lang.AutoCloseable
    • try with resources的对象必须实现AutoCloseable接口

    9.1 使用Collection集合对象

    • Connection: 增、删、遍历对象
    • add
    • remove
    • clear
    • size
    • iterator
    • List
    • Queue

    9.2键值对应的Map
    数组是用数字索引(Key),Map可以看作可以用非数字索引(Key)的数组

    • 常用的Map类

    • Dictionary与HashTable不建议使用

    • Map

    • put
      -get
      -size

    • remove

    • forEach

    • HashMap

    • TreeMap

    • Properties:配置文件

    • 访问Map键值

    • keySet

    • values

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

    1. 问题一:finally块中的代码一定会被执行吗?
    1. 问题二:p228 Average2.java: try...catch与 Average.java比较,这个程序有什么优点?
    • 答: 这个程序使用了try、catch语法,JAM会尝试执行try区块中的程序代码,如果发生错误,执行流程会跳离错误发生点,然后比较catch中声明类型。总而言之,就是增强了输入的容错性,如果输入3o这种不符合要求的数据,则系统有反应能力。
    1. 问题三:p229 Average3.java: 有错误,如何回到正常流程?
    • 答:如果NextInt发生错误,执行流程就会跳到catch区块,执行完之后,因为还在while中,继续执行新的流程。
    1. 问题四:(接上一题)与Average2.java比较,这个程序有什么优点?
    • 答:这个问题将正确的整数输入予以加总,错误的输入则显示略过,不会要求你输入的正确性。但是我认为这个优点同时也是一个缺点,因为如果输入马虎的时候,数据是一个错误输入,而自己也没有发现,则会得到错误的结果,很难发现。
    1. 问题五:p285 Sort3.java:
      自定义类型的排序,实现Comparable接口
      排序是升序还是降序?升序
      修改代码,实现反序。

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


    未解决!

    代码托管

    • 代码提交过程截图:

    • 代码量截图:

    上周考试错题总结

    1. final可以用在类,方法,变量前。(OK)
    • 解决方法:final关键字可以用来修饰类、方法、变量。各有不同。
      A、修饰类(class)。
      1、该类不能被继承。
      2、类中的方法不会被覆盖,因此默认都是final的。
      3、用途:设计类时,如果该类不需要有子类,不必要被扩展,类的实现细节不允许被改变,那么就设计成final类
      B、修饰方法(method)
      1、该方法可以被继承,但是不能被覆盖。
      2、用途:一个类不允许子类覆盖该方法,则用final来修饰
      3、好处:可以防止继承它的子类修改该方法的意义和实现;更为高效,编译器在遇到调用fianal方法转入内嵌机制,提高了执行效率。
      4、注意:父类中的private成员方法不能被子类覆盖,因此,private方法默认是final型的(可以查看编译后的class文件)
      C、修饰变量(variable)
      1、用final修饰后变为常量。包括静态变量、实例变量和局部变量这三种。
      2、特点:可以先声明,不给初值,这种叫做final空白。但是使用前必须被初始化。一旦被赋值,将不能再被改变。
      D、修饰参数(arguments)
      1、用final修饰参数时,可以读取该参数,但是不能对其作出修改
    1. Java中所有的对象都有equals()方法。(OK)
    1. 实现接口表示(拥有行为),但不是ISA关系。
    2. Java中一个类可以继承多个类。(X)
    • 解决方法:接口是常量值和方法定义的集合。接口是一种特殊的抽象类。

    java类是单继承的。classB Extends classA
    java接口可以多继承。Interface3 Extends Interface0, Interface1, interface……

    不允许类多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承那一个呢?
    但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。

    1. Java中一个接口可以继承多个接口。(OK)
    • 解决方法:同上
    1. 面向对象中,设计经验可以用(设计模式)表达
    • 解决方法:见书

    结对及互评

    我的partner是20155316黄月,我感到很荣幸能与大神一起学习,同时我认为黄月同学学习很认真,他的博客我认为这一次也接近满分10分!

    评分标准(满分10分)

    1. 从0分加到10分为止
    2. 正确使用Markdown语法(加1分):
    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
    1. 模板中的要素齐全(加1分)
    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分 - 缺少“参考资料”的不能加分
    1. 教材学习中的问题和解决过程, 一个问题加1分
    2. 代码调试中的问题和解决过程, 一个问题加1分
    3. 本周有效代码超过300分行的(加2分)
    • 一周提交次数少于20次的不加分 6 其他加分:
    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分 7 扣分:
    • 有抄袭的扣至0分
    • 代码作弊的扣至0分

    点评模板:

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

    我感觉这周的学习很辛苦,学习的任务量也有所增加。前面学习了Java核心和面向对象思想,后面的内容都是使用Java的各种类库了。其中我们在学习对象的基础上,将Java中的错误也以对象的方式呈现出来。在首次见到java.util.InputMismatchException时,我总是不是特别明白,尤其是throws java.io.IOException...的出现,使我更加迷惑,所以前几天的学习还是很艰难的。在我通过代码的敲写和书本的反复阅读,大致对这些我不熟悉的事物有所了解,同时发现如果又不会的东西的时候,向partner询问或是上网都是解决方法的一个途径。
    另外,这周的代码编写上我也有了一定的进步。用之前我每次编写完代码之后都懒得git add .和git commit - m ""的,但是通过老师的提示,我这周改正了我自己的懒惰,在编完代码就进行git,虽然有的时候还是总忘,但是还是有一点进步的。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 300/ 2/2 20/20 学会了异常处理及Collection与Map

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 耗时估计的公式 :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
    参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 相关阅读:
    Mysql安装
    Python的内存管理机制
    Ansible模块
    Redis持久化
    Linux——ansible(1)
    Flask
    Flask入门
    ajax处理回调函数,用ajax向后台发送数据
    数字类型钱币转换为大写
    ligerui多选动态下拉框
  • 原文地址:https://www.cnblogs.com/JIUSHA/p/6624186.html
Copyright © 2020-2023  润新知