zoukankan      html  css  js  c++  java
  • 20182301 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结

    20182301 2019-2020-1 《数据结构与面向对象程序设计》第6周学习总结

    教材学习内容总结

    • 异常处理:
      • 错误和异常代表不常见的或不正确处理的对象
      • 三张方式:
        • 不处理异常
        • 在异常发生的地方处理
        • 在程序的其他地方处理异常
    • 不捕获异常
      • 抛出异常时输出的消息提供了方法调用栈的轨迹
      • getMessage方法返回一个字符串说明原因
      • printStackTrace方法输出调用栈跟踪信息
    • try-catch语句
      • 接在try块后的catch子句定义如何处理一种具体异常,一个try可以对多个touch
      • finally无论如何都要执行
    try{
        hanshuti}
        catch(){
        }
        finally
    }
    
    • 异常传播:如果没有在异常发生处捕获并及时处理它,这个异常将被传播给调用的方法,程序员必须找到最合适的层处理异常
    • 异常类的层次
      • Error类和Exception类的共同父类是Throwable类。
      • 必检异常和免检异常
        • 方法头中的throws子句必须包含本方法中没有捕获及处理的必检异常
        • 免检异常:RuntimeExeption或后类对象
    • I/O异常(输入/输出)
      • 流是字节的顺序序列,它可以用作输入源或是输出的目的地。
      • System三个共有的引用变量表示标准I/O流
    • 后绑定
      • 多态引用在不同的时候可以指向不同类型的对象
      • 多态引用在运行时才将方法调用与他的定义绑定在一起
    • 通过继承实现多态
      • 将类的一个对象赋予一个类引用,继承实现is-a关系
      • 引用变量可以指向声明继承于它的任意类的任何对象
      • 对象的类型,而不是引用类型,决定调用的方法是哪个版本
    Mammal pet;
    Horse secretariat = new Horse();
    pet = secretariat;
    
    • 接口
      • 接口是一组抽象方法,不能被实例化。
      • 实现接口的类在类头使用保留字implements,后跟接口名。
      • 如果实现接口,必须把所有方法写上,否则会报错。
      • 接口层次:继承可适用于接口,所以一个接口可派生于另一个接口。子接口继承父接口中的所有抽象方法和常量。
      • Comparable接口
        • if(obj1.compareTo(obj2)<0)
        • System.out.println("obj1 is less than obj2");
      • Iterator接口
        • Boolean hasNext()判断游标右面是否有元素;
        • Object next()返回游标右边元素,并将游标移动到下一位置;
        • void remove()删除游标左边元素;
    • 通过接口实现多态
      • 接口名可以用来声明对象引用变量
      • 接口引用可以指向实现这个接口的任意类的任何对象
      • 方法的参数可以是多态的,这样使方法具备了对其参数进行控制的灵活性。

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

    • 问题1:为什么正方形不能继承长方形?(理解ISA原则)
    • 问题1解决方案:最初的问题,从而引出经典例子:
    public class Stack extends Vector {
    public Object push(Object item) {
    addElement(item);
    return item;
        }
    public synchronized Object pop() {
      }
    }
    
    这三个条件
        子类的前置条件不能强于父类的前置条件。
        子类的后置条件不能弱于父类的后置条件。
        子类的类不变式不能弱于父类的类不变式。
    
    • 简单来说,正方形相较于长方形来说,太过于特殊,所以不能继承。如果硬要把它想成长方形,就失去了本来的意义。

    • 问题2:Throwable类的子类用法

    • 问题2解决方案:

    • Error是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。

    • Exception是程序本身可以处理的异常。Exception 类有一个重要的子类 RuntimeException。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。

      • unchecked exception(非检查异常)
        也称运行时异常(RuntimeException),比如常见的NullPointerException、IndexOutOfBoundsException。对于运行时异常,java编译器不要求必须进行异常捕获处理或者抛出声明,由程序员自行决定。
      • checked exception(检查异常,编译异常)
        也称非运行时异常(运行时异常以外的异常就是非运行时异常),java编译器强制程序员必须进行捕获处理,比如常见的IOExeption和SQLException。对于非运行时异常如果不进行捕获或者抛出声明处理,编译都不会通过。
        图:
    • 问题3:字节流与字符流的区别?

    • 问题3解决方案:

      • 字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串
      • 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以
      • Reader类的read()方法返回类型为int :作为整数读取的字符(占两个字节共16位),范围在 0 到 65535 之间(0x00-0xffff),如果已到达流的末尾,则返回 -1
      • inputStream的read()虽然也返回int,但由于此类是面向字节流的,一个字节占8个位,所以返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。因此对于不能用0-255来表示的值就得用字符流来读取!比如说汉字.

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

    • 问题1:老师给的模板为什么不能运行?图:

    • 问题1解决方案:因为没有创建文件夹,系统找不到文件夹,不能创建文件。
    • 在解决这个问题时,我了解到了两种书写文件夹的方法:一种是/;另一种是\,第一个表示转义字符。
    • 问题2:书本第九章代码9.7出现问题,为什么?
      图:

    • 问题2解决方案:该方法只返回了return,与count--并无关系,书上笔误;
    • 问题3:实验中再次写入中出现问题,怎么办?图:
    • 问题3解决方案:

    • 将字节输入改为字符串输入
      图:

    • 问题4:java之字符串与byte[]数组如何互转?
    • 问题4解决方案:
    • 字符串变成byte类型数组的转换如下
    String a="田江南 你好";
    	byte[] by = null;
    		by = a.getBytes("utf-8");
    
    • 字节数组变成字符串转换如下:
    String a =new String(by);
    System.out.println(a);
    
    • 问题5:Android真机可以收到响应BufferedReader.ready()返回true,但是readline却一直阻塞,怎么办?
    • 问题5解决方案:readline()只有在遇到换行符的时候才会结束,因为发消息的时候加一个换行符即可。

    代码托管第九章

    代码托管第十章

    书本代码第九章

    书本代码第十章

    (statistics.sh脚本的运行结果截图)

    上周考试错题总结

    • 错题1:

    • 原因:语句if (list[j] < temp) c++;将list中的每个元素与temp进行比较,并仅在元素小于temp时将一个元素添加到c中,因此它计算list中小于temp的元素数量,并将结果存储在c中。
    • 错题2:

    • 原因:重载只是为具有不同参数列表的方法提供了替代方法。覆盖提供了多态性,因为调用适当的方法取决于当前引用的对象。嵌入是类中类的封闭。抽象与多态性无关。封装是使用可见性修饰符(public、private、protected)实现的。
    • 错题3:

    • 原因:决定调用哪个方法的是对象的类型,而不是引用的类型
    • 错题4:

    • 原因:为此,只需使用接口名或基类名来声明变量。然后参数是多态的,在执行期间引用类的正确实例,在执行期间访问正确的语义
    • 错题5:

    • 原因:二叉搜索只在数据排序的情况下有效。二分搜索算法假设每对数据元素之间存在严格的升序或降序关系。没有这个顺序,二分查找就不能正常工作。
    • 错题6:

    • 原因:抛出异常是被当前的代码如果代码包含在一个try语句和适当的catch语句实现,否则是传播的方法调用的方法引起的异常,在一个合适的声明,否则继续传播通过相反的顺序的方法,这些方法被调用。但是,一旦到达主方法,这个过程就会停止。如果没有被捕获,异常将导致程序终止(这将是答案a,异常被忽略)。但是,不会将异常抛出给异常类。
    • 错题7:

    • 原因:B、C和D中的答案都是正确的,runtimeexception是可抛出的对象,不属于Error类,有两种类型的runtimeexception是arithomeexception和NullPointerException。非runtimeexception的异常包括各种已检查的异常,但runtimeexception不是已检查的异常
    • 错题8:

    • 原因:数据流表示特定的源或目标流,用于输入或输出。处理流类似于数据流,其中一些附加的流程被添加到输入或输出中。例如,处理字节流可能会从文件中输入所有项,并删除任何非数字的ASCII字符,以便预期为数字的输入不会引发NumberFormatException。
    • 错题9:

    • 原因:在Java, System中有三个可用的默认流。在系统。。,system . err所有这些都是带有System的对象。作为一个输入流,系统。输出是一个输出流和系统。err是一个错误流(也是一个输出流)。
    • 错题10:

    • 原因:如果在程序的任何地方都没有捕捉到抛出的异常,则程序终止,显示运行堆栈跟踪的内容。运行堆栈跟踪的第一项是抛出的异常及其抛出位置(抛出异常的类的方法的行号)。
    • 错题11:

    • 原因:选中的异常必须被捕获,或者必须在一个抛出子句中列出。未检查的异常不需要抛出子句。这两种异常都遵循异常传播的规则。

    点评过的同学博客和代码

    • 本周结对学习情况

    - 结对学习内容
        - 学习异常
        - 学习三要素
    

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

    《Think in Java》中写道:“开发一个程序时,最好的方法就是将对象想象为‘服务提供者’,程序通过调用若干对象提供的服务来实现预期目标。”
    我必须不断训练自己拥有这个思维。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 69/69 2/2 30/30
    第二、三周 529/598 3/5 25/55
    第四周 300/1300 2/7 25/80
    第五周 2665/3563 2/9 30/110 接口与远程
    第六周 1108/4671 1/10 25/135 多态与异常

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

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

    • 计划学习时间:30小时

    • 实际学习时间:25小时

    • 改进情况:
      这周的别的事情较多,所以很急,以后一定好好把本次课程复习一下。

    参考资料

  • 相关阅读:
    美团容器平台架构及容器技术实践
    【人物志】美团首席科学家夏华夏:不断突破边界的程序人生
    Category 特性在 iOS 组件化中的应用与管控
    浅谈大型互联网企业入侵检测及防护策略
    【基本功】深入剖析Swift性能优化
    CAT 3.0 开源发布,支持多语言客户端及多项性能提升
    安装window下的redis,redis可视化管理工具(Redis Desktop Manager)安装,基础使用,实例化项目
    .Net Core Redis的使用
    焦点IT Redis安装与配置( Windows10 或Windows server)
    用VScode配置Python开发环境
  • 原文地址:https://www.cnblogs.com/zhaopeining/p/11681651.html
Copyright © 2011-2022 走看看