20175306王佳烁第六周学习总结

#20175306 2018-2019-2 《Java程序设计》第6周学习总结

教材学习内容总结

第七章:内部类与异常类

7.1内部类:即在一个类中定义另一个类(可以用static修饰)
内部类与外嵌类之间的重要关系:

  • 内部类的外嵌类的成员变量在内部类仍然有效,内部类中的方法也可以调用外嵌类中的方法
  • 内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。
  • 内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象。

7.2匿名类:创建子类对象时,除了使用父类的构造方法外还有类体
匿名类的特点:

  • 匿名类可以继承父类的方法也可以重写父类的方法
  • 使用匿名类时,必然是在某个类中直接用匿名类创建对象,因此匿名类一定是内部类。
  • 匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以声明static成员变量和static方法
  • 由于匿名类是一个子类,但没有类名,所以在匿名类创建对象时,要直接使用父类的构造方法。
    (和接口有关的匿名类同理)

7.3异常类:使用throw关键字抛出一个Exception子类的实例表示异常发生

  • try-catch语句
  • 自定义异常类

7.4断言:使用关键字assert声明一条断言语句

  • 在调试程序时可以使用-ea启用断言语句

第十章:输入、输出流

10.1File类:创建一个File对象的构造方法有3个

  • File(String filename);
  • File(String directoryPath,String filename);
  • File(File dir,String filename);
    10.1.1文件的属性:

10.1.2目录:

10.1.3文件的创建与删除:

  • public boolean createNewFile();
  • public boolean delete();

10.1.4运行可执行文件:

  • ec可以调用exec(String command)方法打开本地机器上的可执行文件或执行一个操作。

10.2文件字节输入流:步骤如下

  • 设定输入流的源;
  • 创建指向源的输入流:构造方法FileInputStream(String name);FileInputStream(File file);
  • 让输入流读取源中的数据:int read();int read(byte b[]);int read(byte b[],int off,int len);
  • 关闭输入流:close();

10.3文件字节输出流:步骤如下

  • 给出输出流的目的地;
  • 创建指向目的地的输出流:构造方法FileOutputStream(String name);FileOutputStream(File file);
  • 让输出流把数据写入到目的地:void write(int n);void write(byte b[]);void write(byte b[],int off,int len);
  • 关闭输入流:void close();

10.4文件字符输入,输出流:文件字节输入、输出流的read和write方法使用字节数组读写数据,即以字节为单位处理数据。
10.5缓冲流:BufferedReader和BufferedWriter类创建的对象称为缓冲输入、输出流,二者增强了读写文件的能力。
注:关闭输出流时要首先关闭缓冲输出流,然后关闭缓冲输出流指向的流,即先关闭上层流再关闭底层流。在编写代码时只需关闭上层流,那么上层流的底层流将自动关闭。
10.6随机流:RandomAccessFile类创建的流称作随机流,与前面的输入、输出流不同的是,RandomAccessFile类既不是InputStream类的子类,也不是OutputStream类的子类。
注:RandomAccessFile类创建的流的指向既可以作为流的源,也可以作为流的目的地,换句话说,当准备对一个文件进行读写操作时,创建一个指向该文件的随机流即可,这样既可以从这个流中读取文件中的数据,也可以通过这个流写入数据到文件。
两个构造方法:

  • RandomAccessFile(String name,Steing mode);
  • RandomAccessFile(File file,Steing mode);

10.7数组流:

  • 字节数组流:字节数组输入流ByteArrayInputStream和字节数组输出流ByteArrayOutputStream分别使用字节数组作为流的源和目的地。
  • 字符数组流:与字节数组流对应的是字符数组流CharArrayReader和CharArrayWriter类,字符数组流分别使用字符数组作为流的源和目标。

10.8数据流:DataInputStream和DataOutputStream类创建的对象称为数据输入流和数据输出流。
两个构造方法:

  • DataInputStream(InputStream in);
  • DataOutputStream(OutnputStream out);

10.9对象流:ObjectInputStream和ObjectOutputStream类分别是InputStream和OutputStream类的子类。ObjectInputStream和ObjectOutputStream类创建的对象称为对象输入流和对象输出流。
两个构造方法:

  • ObjectInputStream(InputStream in);
  • ObjectOutputStream(OutputStream out);

10.10序列化与对象克隆:将该对象写入对象输出流指向的目的地,然后将该目的地作为一个对象输入流的源,那么该对象输入流从源中读回的对象一定是原对象的一个克隆。
10.11使用Scanner解析文件:

  • 使用默认分隔标记解析文件
  • 使用正则表达式作为分隔标记解析文件

10.12文件对话框:javax.swing包中的JFileChooser类可以创建文件对话框。
10.13带进度条的输入流:javax.swing包提供的输入流类ProgressMonitorInputStream。
10.14文件锁:步骤如下

  • 先使用RandomAccessFile流建立指向文件的流对象,该对象的读写属性必须是rw
  • input流调用方法getChannel()获得一个连接到底层文件的FileChannel对象(信道)
  • 信道调用tryLock()或lock()方法获得一个FileLock(文件锁)对象,这一过程也称作对文件加锁。

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

问题一:IDEA中如何设置断言
解决过程:默认设置没有启动断言,需要在命令行下使用-enableassertions(简写为-ea)

  1. 选择Edit Configurations

  2. 在VM optons中 加入 -es
  3. 现在就可以利用断言调试了

代码托管

码云链接:>https://gitee.com/wjs123456/wjs20175306

本周代码详情

!!!由于重新删除连接了一下本地分支,所以可能出了些问题。!!!

本周错题总结

1、下列关于内部类的说法,正确的是(ABD)
A .其他类不可以用某个类的内部类声明对象。
B .内部类字节码文件的名字格式是“外嵌类名$内部类名”。
C .内部类的类体可以声明类变量和类方法。
D .内部类在成员位置上,因此可以被private修饰。
2、已知String s = null;下列代码会抛出NullPointerException异常的有(AC)
A .if( (s!=null) & (s.length()>0) )
B .if( (s!=null) && (s.length()>0) )
C .if( (s==null) | (s.length()==0) )
D .if( (s==null) || (s.length()==0) )
3、下列说法正确的是(ABD)
A .可以使用FileOutputStream类写入文件。
B .FileOutputStream类的构造方法有FileOutputStream(File file)、FileOutputStream(String name)、FileOutputStream(File file, boolean append)等。
C .对于FileOutputStream(String name)方法,参数name指定的文件称为输出流的源。
D .如果输出流指向的文件是已存在的文件,输出流将刷新该文件,使得文件的长度为0。
4、下列哪一个不是java.io类的子类?(E)
A .BufferedReader
B .BufferedWriter
C .FileReader
D .FileWriter
E .PrintReader
F .PrintWriter
5、Assuming zoo-data.txt is a multiline text file, what is true of the following method?(A)
private void echo() throws IOException {
try (FileReader fileReader = new FileReader("zoo-data.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader)) {
System.out.println(bufferedReader.readLine());
}
}
A .It prints the first line of the file to the console.
B .It prints the entire contents of the file.
C .The code does not compile because the reader is not closed.
D .The code does compile, but the reader is not closed.
E .The code does not compile for another reason.

本周总结:

本周由于学习了两章,感觉任务有点重,也由于放假没有安排好自己的时间,所以感觉有点赶,而且第十章的知识需要背一下,并且多用才会记住,熟能生巧,灵活的运用要比死记硬背更有效果!

猜你喜欢

转载自www.cnblogs.com/wjs123456/p/10663363.html