• 20165202 2017-2018-2 《程序设计与数据结构》第5周学习总结


    20165202 2017-2018-2 《程序设计与数据结构》第5周学习总结

    教材学习内容总结

    Ch7

    • 内部类

      Java允许类可以有一种成员:内部类。

      Java支持在一个类中定义另一个类,这个类称做内部类,而包含内部类的类称为内部类的外嵌类。

      Java编译器生成的内部类的字节码文件的名字和通常的类不同,内部类对应的字节码文件的名字格式是 “外嵌类名$内部类名”。

      内部类可以被static修饰。
      类是一种数据类型,那么static内部类就是外嵌类中的一种静态数据类型,这样一来,程序就可以在其他类中使用static内部类来

      创建对象,static内部类不能操作外嵌类中实例成员变量。

    • 匿名类

      我们可以直接用一个类的子类的类体创建一个子类对象,也就是说创建子类对象时,除了使用父类的构造方法还有类体
      

    ,此类体被认为是一个子类去掉类声明后的类体称做匿名类。

    Bank的匿名子类:
    new  Bank() {
    匿名类的类体
    };                  注意:结尾加分号
    
     匿名类可以继承父类的方法也可以重写父类的方法。
    
     使用匿名类时,必然是在某个类中匿名类创建对象,因此匿名类一定是内部类。
    
     匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以声明static成员变量和static方法。
    
     由于匿名类是一个子类,但没有类名,所以用匿名类创建对象时,要直接使用父类的构造方法。
    
     匿名对象的引用可以传递给一个匹配的参数
    
    • 异常类:异常是指程序运行时可能出现的一些错误。

      try — catch 语句
      try {
      包含可能发生异常的语句
      }catch(ExceptionSubClass1 a) {

      }catch(ExceptionSubClass1 b) {

      }

      一旦try部分抛出异常,或调用某个可能抛出异常对象的方法,并且该方法抛出了异常对象,那么try部分将立刻结束执行,转向相应的catch部分。

      程序可以将发生异常后的处理放在catch部分。
      try — catch语句可以由几个catch组成,分别处理发生的相应异常。
      各个catch参数中的异常类都是Exception的某个子类,表示try部分可能发生的异常,这些子类之间不能有父子关系,否则保留一个含有父类参数的catch即可

    ch10

    输入输出流

    • File类

      1.获取文件本身一些信息,不涉及对文件的读写操作。
      2.构造方法 : File(String filename),File(String directoryPath,String filename),File(File dir,String filename)
      3.创建目录 :f.mkdir();
      4.文件创建 :File f = new File("a.txt");
      5.文件删除 :f.delete();
      6.运行可执行文件:Runtime ec; ec = Runtime.getRuntime();

    • 文件字节输入流、输出流
      1.构造方法 : 输入流--FileInputStream(String name);,输出流--FileOutputStream(String name);
      2.使用 : 输入流读取 int read方法,输出流读取 void write方法。
      3.关闭 :输入流 in.close();,输出流void.close();

    • 文件字符输入输出流
      1.构造方法 : 输入流--FileReader(String filename);,输出流--FileWriter(String filename);
      2.使用 : 输入流读取 int read方法,输出流读取 void write方法。
      3.关闭 :输入流 in.close();,输出流void.close();
      注:输出流调用flush()方法,将当前缓冲区内容写到目的地。

    • 缓冲流
      1.文件字符输入流作为BufferedReader流的源,文件字符输出流作为BufferedWriter流的目的地,BufferedReader可以按行读取文件。
      2.构造方法 :

      BufferedReader(Reader in);, 
      BufferedWriter(Writer out);
      
    • 随机流
      1.既可以读文件,也可以写文件。
      2.构造方法 : RandomAccessFile(String name,String mode),RandomAccessFile(File file,String mode)

    • 数组流、数据流、对象流

    • 序列化与对象克隆

    • 使用Scanner解析文件
      1.使用默认分隔表及解析文件 : 调用next()方法
      2.只用正则表达式作为分隔标记解析文件 :使用useDelimiter方法

    • 文件对话框
      1.showSaveDialog(Componet a);,showOpenDialog(Componet a);

    • 文件锁

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

    • 问题1: FileInputStreaml流的read方法与FileReader 流的raed方法有何不同?

    • 问题1解决方案:

      两个类的构造函数的形式和参数都是相同的,参数为 File 对象或者表示路径的 String ,区别在于

      FileInputStream :以字节流方式读取;

      FileReader :把文件转换为字符流读入;

      InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。

      Reader类及其子类提供的字符流的读取char,inputStream及其子类提供字节流的读取byte,所以FileReader类是将文件按字符流的方式读取,FileInputStream则按字节流的方式读取文件;InputStreamReader可以将读如stream转换成字符流方式,是reader和stream之间的桥梁

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

    • 问题1:无法将类中构造器应用到给定类型

    • 问题1解决方案:

      这是在其他书上看到的一个例题

      public Book(String bookName, String author, String publisher, String publishDate) 
      

      Book b1 = new Book();定义时b1中类名个数及名称必须与Book完全一致否则就会出现该问题

    代码托管

    上周考试错题总结

    1.下列说法正确的是

    A.如果想在方法中使用被隐藏的成员变量,可以使用关键字super。

    B.double类型的成员变量的默认值为0,局部变量没有默认值。

    C. 对成员变量的赋值操作只能放在方法中。

    D . 面向对象语言中的“类”相当于C语言中的“函数”
    解析:A项:应使用关键字this。B项:double类型的成员变量的默认值为0.0。D项:面向对象语言中的“方法”相当于C语言中的“函数”。
    2.下列关于UML类图的说法,正确的是

    A.抽象类和抽象方法一般用斜体表示。

    B.一般情况下,方法的属性用+表示private,用-表示public。

    C.在UML 里,一个类的属性能显示它的名字,类型,初始化值。

    D.继承用一个带三角的直线表示,由父类指向子类。

    解析:B项:用+表示public,用-表示private。D项:由子类指向父类。
    3.下列关于创建对象的说法,错误的是
    A.创建一个对象包括对象的声明和为对象分配变量两个步骤。

    B.使用Student stu;声明对象变量后,stu的内存中还没有任何数据。

    C.引用型成员变量的默认初值为0。

    D.对象的引用存在堆中,对象的实体(分配给对象的变量)存在栈中。

    E.String a="ab"+"cd";创建了3个对象。

    解析:4.3.2节。C项:引用型成员变量的默认初值为null。D项:对象的引用存在栈中,对象的实体(分配给对象的变量)存在堆中。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
    目标 5000行 30篇 400小时
    第一周 24/24 1/4 15/15
    第二周 423/423 2/6 14/29
    第三周 702/1109 1/7 16/45
    第四周 918/2027 2/9 16/61
    第五周 1208/3235 2/11 15/76
  • 相关阅读:
    Flink命令行提交job (源码分析)
    Flink 中LatencyMarks延迟监控(源码分析)
    Flink中的CEP复杂事件处理 (源码分析)
    Flink中异步AsyncIO的实现 (源码分析)
    Flink中发送端反压以及Credit机制(源码分析)
    Flink中接收端反压以及Credit机制 (源码分析)
    Flink整合oozie shell Action 提交任务 带kerberos认证
    Flink中TaskManager端执行用户逻辑过程(源码分析)
    Flink的Job启动TaskManager端(源码分析)
    Flink中Idle停滞流机制(源码分析)
  • 原文地址:https://www.cnblogs.com/jhs888/p/8685859.html
Copyright © 2020-2023  润新知