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
posted @ 2018-04-01 11:02  Haimi98  阅读(155)  评论(0编辑  收藏  举报