zoukankan      html  css  js  c++  java
  • 20155231 2016-2017-2 《Java程序设计》第5周学习总结

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

    教材学习内容总结

    学习目标

    • 理解异常架构
    • 掌握try...catch...finally处理异常的方法
    • 会用throw,throws
    • 理解Collection和Map架构
    • 会用常见的数据结构和算法
    • 了解Lambada和泛型

    第八章:异常处理

    • Java异常处理是要处理Exception类及其子类(Checked Exception),RuntimeException及其子类也不用处理(Unchecked Exception)

    try、catch语法

    • 使用了try、catch语法,JVM会尝试执行try区块中的程序代码,如果发生错误,执行程序会跳离错误发生点,然后比对catch括号中声明的类型,是否符合被抛出的错误对象类型,如果是的话就执行catch区块中的程序代码。
    • 运用try、catch,还可以在捕捉处理错误之后,尝试恢复程序正常执行流程。
    • 如果父类异常对象在子类异常前被捕捉,则catch子类异常对象的区块将永远不会被执行。
    • catch括号中列出的异常不得有继承关系,否则会发生编译错误。
    • 在catch区块进行完部分错误处理之后,可以使用throw(注意不是throws!)将异常再抛出。

    堆栈追踪

    • 在多重方法调用下,异常发生点可能是在某个方法之中,若想得知异常发生的根源,以及多重方法调用下的堆栈传播,可以利用异常对象自动收集的堆栈追踪来取得相关信息,例如调用异常对象的printStackTrace()。
    • 在使用throw重抛异常时,异常的追踪堆栈起点,仍是异常的发生根源,而不是重抛异常的地方。

    使用finally

    • 若想最后一定要执行关闭资源的动作,try、catch语法可以搭配finally,无论try区块中有无发生异常,若撰写有finally区块,则finally区块一定会被执行。
    • 如果程序撰写的流程中先return了,而且也有finally区块,那finally区块会先执行完后,再讲将值返回。

    自动尝试关闭资源

    • 尝试关闭资源语法:想要尝试自动关闭资源的对象,是撰写在try之后的括号中,如果无须catch处理任何异常,可以不用撰写,也不用撰写finally自行尝试关闭资源。
    • 尝试关闭资源语法可套用的对象,必须操作java.lang.AutoCloseable接口。
    • 在try的括号中,越后面撰写的对象资源会越早被关闭。

    第九章:Collection与Map

    使用Collection收集对象

    • 收集对象的行为,像是新增对象的add()方法、移除对象的remove()方法等,都是定义在java.util.Collection中。既然可以收集对象,也要能逐一取得对象,这就是java.lang.Iterable定义的行为,它定义了iterator()方法返回java.lang.Iterable操作对象,可以让你逐一取得收集的对象。
    • 收集对象的共同行为定义在Collection中,然而收集对象会有不同的需求。如果希望收集时记录每个对象的索引顺序,并可依索引取回对象,这样的行为定义在java.util.List接口中。如果希望收集的对象不重复,具有集合的行为,则由java.util.Set定义。如果希望收集对象时以队列方式,收集的对象加入至尾端,取得对象时从前端,则可以使用java.util.Queue。如果希望Queue的两端进行加入、移除等操作,则可以使用java.util.Deque。
    • List是一种Collection,作用是收集对象,并以索引方式保留收集的对象顺序,其操作类之一是java.util.ArrayList。
    • 数组在内存中会是连续的线性空间,根据索引随机存取时速度快,如果操作上有这类需求时,像是排序,就可使用ArrayList,可得到较好的速度表现。
    • LinkedList在操作List接口时,采用了链接(Link)结构。
    • 收集过程中若有相同对象,则不再重复收集,如果有这类需求,可以使用Set接口的操作对象。
    • 泛型语法:类名称旁有角括号<>,这表示此类支持泛型。实际加入的对象是客户端声明的类型。
    • Collections的sort()方法要求被排序的对象必须操作java.lang.Comparable接口,这个接口有个compareTo()方法必须返回大于0、等于0或小于0的数。
    • Collections的sort()方法有另一个重载版本,可接受java.util.Comparator接口的操作对象,如果使用这个版本,排序方式将根据Comparator的compare()定义来决定。

    键值对应的Map

    • 若要根据某个键来取得对应的值,可以事先利用java.util.Map接口的操作对象来建立键值对应数据,之后若要取得值,只要用对应的键就可以迅速取得。常用的Map操作类为java.util.HashMap与java.util.TreeMap,其继承自抽象类java.util.AbstractMap。Map也支持泛型语法。
    • 如果使用TreeMap建立键值对应,则键的部分则会排序,条件是作为键的对象必须操作Comparable接口,或者是在创建TreeMap时指定操作Comparator接口的对象。
    • 如果想取得Map中所有的键,可以调用Map的keySet()返回Set对象。由于键是不重复的,所以用Set操作返回是理所当然的做法,如果想取得Map中所有的值,则可以使用values()返回Collection对象。
    • 如果想同时取得Map的键与值,可以使用entrySet()方法,这会返回一个Set对象,每个元素都是Map.Entry实例。可以调用getKey()取得键,调用getValue()取得值。

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

    • 问题1:thorw和throws在使用时到底有什么区别?
    • 问题1解决方案:用户程序自定义的异常和应用程序特定的异常,必须借助于throws和throw语句来定义抛出异常。throw是语句抛出一个异常,语法:throw(异常对象);throw e; throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)语法:(修饰符)(方法名)([参数列表])[throws(异常类)]{......}
    public void doA(int a) throws Exception1,Exception3{......}
    

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

    • 问题1:命令行下编译java文件,提示使用了未经检查或不安全的操作。

    • 问题1解决方案:这类问题属泛型的原因
      那么大多可以通过这种方式来消除:

    1. @SuppressWarnings("unchecked")的确是一种解决方案。
    2. 这个是由于jdk5.0后有了泛型. 有5.0之前.我们可以这样写Vector v是没有问题的. 但5.0之后有了泛型你就要写成Vector 比如你里面是放的String那写成Vector 它就知道里面的类型就不会有这个警告了
    m_vector = new Vector(); 
    protected Vector m_vector; 
    

    改成

    protected... Vector <StockData>.. m_vector;.. ///这里 
    m_vector... =... new... Vector <StockData>();...//还有这里
    


    代码托管

    本周:

    总量:

    上周考试错题总结

    • 1.填空:使用JDB进行调试时单步执行命令有step和next,我们优先使用(next)。
    • 2.填空:使用JDB进行调试时查看源代码的命令是(list)。
    • 4.填空:”Hello”.charAt(1) 的值是(‘e’)
    • 10.CH06填空:写出编译P165 RPG.java的命令(javac –d . *.java)
    • 29.CH07 填空:用enum定义一个Season的类型表示四季(public enum Season{SPRING, SUMMER, AUTUMN,WINTER})。
    • 30.CH07 填空:面向对象中,设计经验可以用(设计模式)表达

    结对及互评

    • 我与20155206赵飞组成学习伙伴;
    • 优秀的地方:经常上传代码,并且博客完成的较早,值得我学习。
    • 不足的地方:代码量较少,博客内容略少。

    评分标准

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

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

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

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

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

      • 一周提交次数少于20次的不加分
    6. 其他加分:

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

      • 有抄袭的扣至0分
      • 代码作弊的扣至0分

    点评模板:

    • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

    • 参考示例

    点评过的同学博客和代码

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

    本周博客中加入了评分标准,和自己的博客对比后,有了目标,知道了怎么更好的完成博客。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第5周 556/1166 1/5 14/98

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

    • 计划学习时间:20小时

    • 实际学习时间:14小时

    • 改进情况:加快学习效率

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    Atitit.播放系统规划新版本 v4 q18 and 最近版本回顾
    Atitit.播放系统规划新版本 v4 q18 and 最近版本回顾
    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p
    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p
    Atitit.文件搜索工具 attilax 总结
    Atitit.文件搜索工具 attilax 总结
    Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package
    Atitit.软件命名空间  包的命名统计 及命名表(2000个名称) 方案java package
    Atitit..状态机与词法分析  通用分词器 分词引擎的设计与实现 attilax总结
    Atitit..状态机与词法分析  通用分词器 分词引擎的设计与实现 attilax总结
  • 原文地址:https://www.cnblogs.com/javasyn/p/6623480.html
Copyright © 2011-2022 走看看