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


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

    教材学习内容总结

    异常处理

    • try-catch语法:JVM执行try区块中的代码,如果发生错误就会跳到catch进行比较,如果错误类型被抛出错误的类型相符就执行catch区块中的代码。

    • 错误会被包装为可抛出的对象,错误对象都是继承自Java.lang.Throwable类,Java.lang.Throwable类有两个子类:java.lang.Error和java.lang.Exception。程序设计本身的错误一般使用Exception或其子类来实现。

    • 如果一个方法声明会抛出Throwable或子类实例,只要不是属于Error、java.lang.RuntimeException或其子类实例,就必须使用try-catch语法或者throws声明这个方法会抛出异常,否则就会编译失败。

    • 在Exception或其子对象中,RuntimeException和其子对象成为执行时期异常或称非受检异常,其他的对象称为受检对象。

    • 父类异常对象的捕捉必须放在子类异常对象捕捉之前,否则父类异常对象永远不会被执行,编译会出错。

    • 多重捕捉的catch中列举的异常不能有继承关系,否则编译会出错。

    • 如果抛出的是受检异常,必须在方法上使用throws声明,如果是抛出非受检异常,就不需要throws声明。

    • 堆栈追踪可以知道异常的根源,可以调用异常对象的printStackTrace()方法得到异常的根源和调用方法的顺序。getStackTrace()方法可以取得个别堆栈追踪元素进行处理。fillInStackTrace()方法可以让堆栈异常的起点为重抛异常的地方。

    • 断言assert:

    assert 表达式 //表达式的结果只能是true或者false,如果是false就会编译出错
    assert 表达式1:表达式2 //表达式2在表达式1位false时执行
    
    • finally:try-catch语法可以和finally搭配,无论try区块中是否有异常都会先执行finally区块中的代码。

    • 自动尝试关闭资源:想要尝试自动关闭资源的对象写在try后面的括号之中。尝试自动关闭资源的对象必须操作Java.lang.AutoCloseable接口。在try括号中,越后撰写的对象资源越早被关闭。

    Collection与Map

    • 收集对象的共同行为定义在Collection中,在收集对象会有不同的需求,会依据需求使用不同的接口操作对象。

    • list:一种以索引方式保留收集对象的顺序的Collection。ArrayList在内存中是连续的线性空间,根据索引随机存取时速度快,适用于排序。LinkedList采用了链接的结构,适用经常变动索引的情况。

    • Set:收集不重复的内容。hashset的操作概念是,每个内存空间都有一个hash编码,这些空间称为hash桶。如果一个对象要加入hashset,则会调用对象的hashCode()取得hash码,并尝试放入对应号码的hash桶中。如果hash桶中已经有对象了,就会调用equals()进行比较。

    • Queue:收集的对象加入至尾端,取得对象时从前端。其中offer()方法用来加入对象,poll()方法用来取出对象,peek()方法是取出对象但是保留队列中的对象。

    • 泛型:指定某个类或者方法支持泛型,可以用类型代号代替实际类型。

    • lambda表达式:lambda表达式的语法可以省略了接口类型与方法名称,->左边是参数列,而右边是方法本体。

    • Interable和Ierator:使用Interable接口中的Interator方法收集所有对象

    • Comparable和Comparator:通过操作Comparable接口来使用Collection的sort()方法对对象排序。通过操作Comparator接口来重载sort()方法。

    • Map:通过操作java.util.Map接口,可以根据某个键来取得对应的值。HashMap不对键排序,TreeMap会对键排序。keySet()收集所有键,vaules()收集所有值,entrySet()收集键和值。

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

    • 关于教材P258页第三题。我的理解是,题目中try检查的numberformatexception指检查输入是否符合格式,因为输入的one是字符串,而要求输入的是整型数类型,所以我认为会显示“必须输入数字”。而网上提供的参考答案选择的也是B。但是我在写代码的时候却惊奇地发现,显示结果为arrayindexoutofboundexception,数组超过预定义长度。

    • 关于教材P258-P259页第四、五题和第六题的区别:第四题第五题是在一个类中调用了某个定义了抛出异常的方法(构造函数),在定义这个类的异常抛出的时候,可以定义和方法的异常抛出相同的类,也可以定义方法的异常抛出的类的父类。而第六题是继承,子类在定义异常抛出的类时,只能定义父类的异常抛出的类或者其子类。

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

    • 本周周内编程作业:关于Student类的对象实例的比较中遇到的问题:先定义好了student类,然后单独新建了一个名为overridequals的类重新定义了equals方法,然后overrideequals继承student类,最后再定义名为mian的类。编译通过证明没有语法问题,但事实上即使两个student实例的所有成员都是一样的,反馈都是不同。后来直接把重新定义eqauls的代码放到student类中就没有任何问题了。

    代码托管

    • 代码提交过程截图:
      • 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图
    • 代码量截图:
      • 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图

    上周考试错题总结

    • “Hello”.charAt(1) 的值是(‘e’)
    • System.out.println( “HELLO”.( toLowerCase() ) ) 会输出“hello”..
    • “Hello”.substring( 0,2 )的值是“He”
    • CH06填空:在构造方法中调用本类的构造方法,要使用(this)关键字
    • CH06填空:在构造方法中调用父类的构造方法,要使用(super)关键字
    • CH07 填空:面向对象中,设计经验可以用(设计模式)表达

    结对及互评

    评分标准(满分10分)

    1. 从0分加到10分为止

    2. 正确使用Markdown语法(加1分):

      • 不使用Markdown不加分
      • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
      • 排版混乱的不加分
    3. 模板中的要素齐全(加1分)

      • 缺少“教材学习中的问题和解决过程”的不加分
      • 缺少“代码调试中的问题和解决过程”的不加分
      • 代码托管不能打开的不加分
      • 缺少“结对及互评”的不能打开的不加分
      • 缺少“上周考试错题总结”的不能加分
      • 缺少“进度条”的不能加分
      • 缺少“参考资料”的不能加分
    4. 教材学习中的问题和解决过程, 一个问题加1分

    5. 代码调试中的问题和解决过程, 一个问题加1分

    6. 本周有效代码超过300分行的(加2分)

      • 一周提交次数少于20次的不加分

    6 其他加分:
    - 周五前发博客的加1分
    - 感想,体会不假大空的加1分
    - 排版精美的加一分
    - 进度条中记录学习时间与改进情况的加1分
    - 有动手写新代码的加1分
    - 课后选择题有验证的加1分
    - 代码Commit Message规范的加1分
    - 错题学习深入的加1分
    7 扣分:
    - 有抄袭的扣至0分
    - 代码作弊的扣至0分

    点评模板:

    • 基于评分标准,我给本博客打分:(0-10)。得分情况如下:xxx

    • 参考示例

    点评过的同学博客和代码

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 20篇 400小时
    第一周 10/10 1/4 12/12
    第二周 120/130 1/5 9/21
    第三周 210/340 1/6 9/30
    第四周 460/800 1/7 9/39
    第五周 400/1200 1/8 9/48

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

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

    参考资料

  • 相关阅读:
    18_09_05 textarea高度自适应 和 Z-index
    18_08_20 jQuery 获取URL中的参数
    18_08_20 jQuery 光标聚焦文字之后
    18_08_20 jQuery 将前台 多张图片 和 多个附件 转化为 附件 向后台请求
    18_8_20 Bootstrap ul标题太多的处理方式
    Http (java)的post和get方式
    18_8_20 java 时间延后的通用写法
    iOS设计模式-组合
    iOS设计模式-迭代器
    iOS设计模式-观察者
  • 原文地址:https://www.cnblogs.com/besti20155228/p/6622871.html
Copyright © 2020-2023  润新知