把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

20165211 2017-2018-2 《Java程序设计》第5周学习总结

20165211 2017-2018-2 《Java程序设计》第5周学习总结

教材学习内容总结

本周,我学习了书本上第五、六两章的内容,以下是我整理的主要知识。

第五章 内部类与异常类

内部类

类的两个重要成员:成员变量和方法。除此之外还可以有一种成员:内部类!

内部类:在一个类中定义另一个类

外嵌类:包含内部类的类

内部类和外嵌类的关系:外嵌类的成员变量在内部类仍然有效,内部类中的方法也可以调用外嵌类中的方法。

​ 内部类中的类体不可以声明类变量和类方法。外嵌类的类体可以用内部类声明对象

​ 内部类仅供它的外嵌类使用

Java编辑器生成的内部类的字节码名字格式外嵌类名$内部类名

内部类可以被修饰为static内部类,但是,static内部类不能操作外嵌类中的实例成员变量,非内部类不可以是static类

匿名类
2.1 和子类有关的匿名类

没有显示的定义一个类的子类,而又想用子类创建一个对象,可以直接使用一个类的子类的类体创建一个子类对象

不能用匿名类声明对象,但是却可以直接用匿名类创建一个对象。匿名类对象的引用可以传递给一个匹配的参数。

匿名类的特点:

  • 匿名类亦可继承父类的方法,也可以重写父类的方法。
  • 匿名类一定是内部类
  • 匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以申明static成员变量和方法
  • 用匿名类创建对象时,要直接使用父类的构造方法
2.2 与接口有关的匿名类

没有显示的定义一个实现接口类,而又想实现该接口的类创建一个对象。

异常类

异常:程序运行时可能出现的一些错误

3.1 try-catch语句
try {
    包含可能发生异常的语句
}
catch(ExceptionSubClass1 e){
    ...
}
catch(ExceptionSubClass2 e){
    ...
}
3.2 自定义异常类

一个方法在申明是可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象。

断言

assert booleanExpression,assert booleanExpression:messageException

启用或关闭断言语句:java -ea mainClass

第10章 接口与实现

File类
文件的属性
public String getName() 获取文件的名字
public boolean canRead() 判断文件是否可读
public boolean canWrite() 判断文件是否可被写入
public boolean exists() 判断文件是否存在
public long length() 获取文件的长度
public String getAbsolutePath() 获取文件的绝对路径
public String getParent() 获取文件的父目录
public boolean isFile() 判断文件是否是一个普通文件
public boolean isDirectory() 判断文件是否是一个目录
public boolean isHidden() 判断文件是否是隐藏文件
public long lastModified() 获取文件最后修改的时间
目录

创建目录:public boolean mkdir()

列出目录中的文件:

public String[] list() 用字符串形式返回目录中的全部文件
public File[] listFiles() 用File对象形式返回目录中的全部文件
public String[] list(FilenameFilter filter) 用字符串返回由包含在目录中指定类型的所有文件
public File[] listFiles(FileFilter filter) 用File对象形式返回由包含在目录中指定类型的所有文件
文件的创建与删除

创建:例:File file =new file("C://myletter","letter.txt")

删除:file.delete()

运行可执行文件

使用Runtime类声明一个对象:Runtime ec

使用该类的getRuntime()静态方法创建这个对象:ec = Runtime.getRuntime

文件字节输入流

使用输入流通常包括4个基本步骤:

  1. 设定输入流的源
  2. 创建指向源的输入流
  3. 让输入流读取流中的数据
  4. 关闭输入流
构造方法
FileInputStream(String name);
FileInputStream(File file);
  File f=new File("D:/2000/E.java");
  FileInputStream input=new FileInputStream(f);
使用输入流读取字节
void write(int n) 输出流调用该方法向目的地写数据
void write(byte b[]) 输出流调用该方法向目的地写入一个字节数组
void write(byte b[],int off,int len) 给定字节数组中起始于偏移量off处取len个字节写到目的地
void close() 关闭输出流
文件字符输入,输出流

以char为单位,构造方法:

FileReader(String filename): FileReader(File filename);

FileWrite(String filename):FileWrite(File filename);

FileWrite(String filename,boolean append);

FileWrite(File filename,boolean append);

缓冲流

BufferedReader,BufferedWrite类缓冲输入、输出流可以增强读写文件的能力

BufferedReader,BufferedWrite类,二者的源和目的地必须是字符输入流和字符输出流

BufferedReader,BufferedWrite类的构造方法:

BufferedReader(Reader in):
Reader in=new FileReader("a.txt");
BufferedReader inTwo=new BufferedReader(in);
BufferedWrite (Wirte out);
Write out=new FileWrite("b.txt");
BufferedWrite outTwo=new BufferedWrite(out);
outTwo("你好a",0,3);
随机流

RandomAccessFile类创建的流叫做随机流,不是InputStream类和OutputStream类的子类

指向可以既可以作为流的源,也可以作为流的目的地

构造方法:RandomAccessFile(String name,String mode)

​ RandomAccessFile(File file,String mode)

数组流
字节数组流

字节数组输入流ByteArrayInputStream,字节数组输出流ByteArrayoutputStream

构造方法:

  • ByteArrayInputStream:

    ByteArrayInputStream(byte[] buf);
    ByteArrayInputStream(byte[] buf,int offset,int length);
    
  • ByteArrayoutputStream:

ByteArrayoutputStream();
ByteArrayoutputStream(int size);
字符数组流

CharArrayReader,CharArrayWrite

数据流

DataInputStream和DataoutputStream类创建的对象称为数据输入流和数据输出流

构造方法:DataInputStream:DataInputStream(InputStream in)

​ DataOutputStream:DataOutputStream(OutputStream out)

对象流

ObjectInputStream、ObjectoutputStream分别是InputStream和outputStream类的子类,创建的对象称为对象输入流和对象输出流。

构造方法:ObjectInputStream:ObjectInputStream(InputStream in)

​ ObjectOutputStream:ObjectOutputStream(OutputStream out)

在使用对象流写入或读入对象时,要保证对象是序列化的。

序列化与对象克隆

对象的复制品,且复制品的实体的变化不会引起原对象实体发生变化,这样的复制品称为原对象的一个克隆对象,简称克隆。

对象输入流通过对象的序列化信息来得到当前对象的一个克隆

使用Scanner解析文件
使用默认分割标记解析文件

创建Scanner的对象,并指向要解析的文件:

File file=new File("hello.java");
Scanner sc=new Scanner(file);

那么sc将空格作为分割标记、调用next()方法依次返回file中的单词,如果file最后一个单词已被next()方法返回,sc调回hasNext()将返回false,否则返回true

使用正则表达式作为分割标记解析文件

File file = new File(“hello.java");

Scanner sc=new Scanner(file);

sc useDelimiter(正则表达式);

那么sc将正则表达式作为分隔标记

文件对话框

文件对话框是一个选择文件的界面。javax.swing包中的JFileChooser可以创建文件对话框

带进度条的输入流

javax.swing包中的ProgressMonitorInputStream输入流类,可以看见文件的读取进度

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

  • 问题1:

  • 问题1解决方案:括号内数据间隔符号使用错误

  • 问题2:

  • 问题2解决方案:句末的分号使用了中文字符

代码托管

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 37/37 1/1 10/10
第二周 399/436 1/2 12/22
第三周 764/1163 1/3 18/40
第四周 687/1813 1/4 12/52
第五周 1127/2916 1/5 10/62
posted @ 2018-04-01 16:18  火鲤  阅读(190)  评论(0编辑  收藏  举报