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

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


    教材学习内容总结

    第八章 异常处理

    • 程序设计本身的错误,建议使用Exception或其子类实例来表现,称错误处理为异常处理。
      • try-catch结构:
    try{
        ...//易出错部分程序块
    }catch(.../*错误信息,类似InputMismatchException*/){
        ...//出错后进入该程序块,在程序块内处理错误。
    }
    
    • 抛出异常:catch区块进行完部分错误处理后,可以使用throw将异常抛出,实际上可以再任何流程中抛出异常,直接跳离原有流程,抛出受检或非受检异常。
    public static void main(String[] args) throws FileNotFoundException/*声明方法中会抛出异常*/{
        ...
        try{
            ...
        }catch(FileNotFoundException){
            ...
            throw ex;//执行时抛出异常
        }
    }
    

    如果抛出的是受检异常,认为客户端有能力且应处理异常,在方法上必须使用throws声明;如果抛出的是非受检异常,表示你认为客户端调用方法的时机出错,不使用throws声明。

    • 如何使用断言
      • 断言客户端调用方法前,已经准备好某些前置条件(通常在private方法中)
      • 断言客户端调用方法后,具有方法承诺的结果
      • 断言对象某个时间点下的状态
      • 使用断言取代批注
      • 断言程序流程中绝对不会执行到的程序代码部分
    assert value : "输出的内容";
    /*类似if的判断形式,但不是程序执行流程的一部分。*/
    

    第九章 Collection与Map

    • Collagen API接口继承架构:

    收集对象的行为,比如新增对象的add()方法,移除对象的remove()方法,都定义在java.util.Collection中。

    • Queue:如果希望收集对象时以队列方式,收集的对象加入至尾端,取得对象时从前端,则可以使用Queue接口的操作对象。
      Queue与Deque等义方法
    Queue方法 Deque等义方法
    add() addLast()
    offer() offeLast()
    remove() removeFirst()
    poll() pollFirst()
    element() getFirst()
    peek() peekFirst()
    • Lambda表达式:
    IntegerFunction doubleFunction=(Integer i)->i*2;
    

    等同于

    IntegerFunction doubleFunction=new IntegerFunction(){
        public Integer apply(Integer i){
            return i*2;
        }
    }
    
    • 程序设计中有根据关键字找对应数据的要求,利用java.util.Map接口的操作对象来建立键值对应数据,之后若要取值,用对应键可以迅速取得。
      Map设计架构:

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

    • 问题1:书上代码中last应该是Node类,而Node类中并没有elem成员。

    • 问题1解决方案:把elem成员名改成o。

    • 问题2:throw与throws都是什么意思?

    • 问题2解决方案:throw用于函数体中,抛出一个异常。程序在throw语句后立即终止,不执行throw后面的程序块。而throws用于一个函数头中,用来标明该成员函数可能抛出的各种异常

    throw <异常对象>
    
    [<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]
    

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

    • 问题1:运行时还是出现了类似Average的报错:

    • 问题1解决方案:仔细对比书上的代码发现书上写的是next()不是我写的nextInt(),于是我上网搜索了一下next()和nextInt()两者的区别

    next()只读空格之前的数据,将用户输入的下一个字符串剖析为int值
    nextInt()读取整行内容
    

    改正后程序正常运行。

    代码托管


    上周考试错题总结

    • ”Hello”.charAt(1) 的值是(‘e’)。我写的答案是e,此题在IDEA中运行过,结果是e,但没加上单引号,属于不细心犯的错误。
    • System.out.println( “HELLO”.( toLowerCase() ) ) 会输出“hello”.
    • 父类和子类要有(ISA 或“是一种”)关系 。我写了继承关系。
    • 被声明为protected的方法,只能中继承后的子类中访问。(X)
    • Math中的abs()方法可以Override.(X)
    • 实现一个类中的equals()方法时,一定要同时实现(hashCode())方法。hashCode()没加括号。
    • Java中一个类可以继承多个类。(X)与接口概念混淆。
    • 用enum定义一个Season的类型表示四季(public enum Season{SPRING, SUMMER, AUTUMN,WINTER})。定义Season时大括号里没写四个季节。
    • 面向对象中,设计经验可以用(设计模式)表达。

    结对及互评

    20155313杨 瀚同学结对。

    • 基于评分标准,我给本博客打分:8分。得分情况如下:
      • 正确使用Markdown语法:加1分
      • 模板中的要素齐全:加1分
      • 代码调试中的问题和解决过程:加1分
      • 感想,体会不假大空的加1分
      • 进度条中记录学习时间与改进情况的加1分
      • 排版精美:加1分
      • 有动手写新代码:加1分
      • 错题学习深入的加1分

    点评过的同学博客和代码


    感悟与思考

    这一周我的学习重点放在了第八章的错误处理,就像书上说的一样,Java是唯一可以处理错误的语言,我觉得比c等语言好得多,可以提前预知并且处理错误。由于之前学习过C语言,在Java学习过程中,编程时我所思考的都是c的语言,对比着敲出Java的代码,虽然因此感觉Java变得没那么难以理解,但是也不知道c留给我的刻板印象是不是会限制我的思路,希望以后多练习,能够以学习Java的主要思维设计程序。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第五周 882/2333 1/1 16/72 初步学习了错误处理的语法
    • 计划学习时间:14小时

    • 实际学习时间:16小时

    • 改进情况:本来计划工作日期间每天半小时-一小时,但有的晚上有选修,所以周末多学一会弥补一下。

    参考资料

  • 相关阅读:
    PAT 乙级 1041 考试座位号(15) C++版
    四、Shell输入、输出功能和字符颜色设置
    三、Shell变量类型和运算符
    Shell文件权限和脚本执行
    Spark Standalone
    Loadrunner安装
    kali 2.0源更新
    xmanager远程桌面连接Linux
    Linux--文件查找命令
    Linux下MySQL忘记密码
  • 原文地址:https://www.cnblogs.com/zhuohua/p/6623952.html
Copyright © 2011-2022 走看看