一、本周学习内容

1.内部类——7.1知识

  • 在一个类的内部定义的类成为内部类,包含内部类的类叫做外嵌类
  • 内部类和外嵌类的关系
    • 外嵌类的成员变量在内部类中仍然有效,内部类也可调用外嵌类中的方法
    • 内部类的类体中不能声明类变量和类方法
    • 外嵌类中可用内部类声明对象,作为其成员
    • 内部类仅供它的外嵌类使用,其他类不能用内部类声明对象

2.匿名类——7.2知识

  • 匿名类可不用显式地声明一个类的子类,用子类创建一个对象
  • 匿名子类的形式
new Bank(){
匿名类的类体;
}
  • 匿名类的特点

    • 匿名类可继承、重写父类的方法
    • 匿名类是内部类
    • 匿名类可访问外嵌类的变量和方法,不可以声明static成员变量和static方法
    • 用匿名类创建对象时,要直接使用父类的构造方法

  • 和接口有关的匿名类

    • 可用接口名和类体组合创建一个匿名对象传递给方法的参数,类体中必须重写接口中的全部方法,如
new Computable(){
实现接口的匿名类的类体
}

3.异常类——7.3知识

  • java允许方法调用过程中抛出异常对象,终止当前方法继续执行
  • try-catch语句
    • try-catch语句的try部分用来抛出异常对象,一旦抛出,将立即执行catch部分,所以程序可将发生异常后的处理放在catch部分
try{
包含可能发生异常的语句
}
catch(ExceptionSubClass1 e){ }
catch(){ }
...
  • 各个catch参数中的异常类都是Exception类的子类,这些子类间不能有父子关系

  • 自定义异常类

    • 可自定义异常类,可用throw关键字声明要产生的若干异常,即用相应的异常类创建对象,并用throw关键字抛出该异常对象

4.断言

  • 断言在代码调试阶段发挥作用,当程序正式运行时可以关闭断言语句,但仍把断言语句保留在源代码中,若以后又需要调试,可以重新启用断言语句
  • 语法格式assert booleanExpression;或assert booleanExpression:messageException;,例如,对于断言语句assert number >=0,如果表达式的值为true,程序继续运行,否则立即结束执行。上述booleanExpresion必须是boolean型的表达式,而assert booleanExpression:messageException;表示若结果为true程序正常运行,若为false,程序停止并输出messageException的值
  • 调试程序时可用java -ea mainClass语句启用断言语句

5.finally语句

  • 在执行try-catch语句后,执行finally子语句,无论try部分是否出现异常,finally子语句都会被执行
  • 如果try-catch语句执行了return语句,finally语句仍会被执行
  • try-catch语句中执行了程序退出代码,即System.exit(0);,则不执行finally子语句

6.输入输出流——10.1知识

  • 所有输入流都是抽象类InputStream或Reader的子类,所有输出流都是OutputStream或Writer的子类

  • 创建一个File类的构造方法(filename是文件名,directoryPath是路径,dir是目录)

    • File(String filename)
    • File(String directoryPath,String filename)
    • File(File dir,String filename)
  • File类的下列方法获取文件本身的一些信息。

    • public String getName() 获取文件的名字。
    • public boolean canRead() 判断文件是否是可读的。
    • public boolean canWrite() 判断文件是否可被写入。
    • public boolean exits() 判断文件是否存在。
    • public long length() 获取文件的长度(单位是字节)。
    • public String getAbsolutePath() 获取文件的绝对路径。
    • public String getParent() 获取文件的父目录。
    • public boolean isFile() 判断文件是否是一个普通文件,而不是目录。
    • public boolean isDirectroy() 判断文件是否是一个目录。
    • public boolean isHidden() 判断文件是否是隐藏文件。
    • public long lastModified() 获取文件最后修改的时间。
  • 创建目录 public boolean mkdir()

  • 列出目录中的文件

    • public String[] list() 用字符串形式返回目录下的全部文件。
    • public File [] listFiles() 用File对象形式返回目录下的全部文件。
    • public String[] list(FilenameFilter obj) 用字符串形式返回目录下的指定类型的所有文件。
    • public File [] listFiles(FilenameFilter obj) 用File对象形式返回目录下的指定类型所有文件。
  • 上述两方法的参数FilenameFilter是一个接口,该接口有一个方法:

    • public boolean accept(File dir,String name);
  • 当使用File类创建一个文件对象后,例如File file=new File("c:\\myletter","letter.txt");,如果c:\myletter目录中没有名字为letter.txt文件,文件对象file调用方法public boolean createNewFile();可创建文件

  • 文件对象调用方法public boolean delete()可以删除当前文件,例如:file.delete();。

  • 用Runtime 类声明一个对象( Runtime类在java.lang包)Runtime ec;

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

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

7.文件字节输入流——10.2&10.3知识

  • Java把InputStream抽象类的子类创建的流对象称作字节输入流
  • OutputStream抽象类的子类创建的流对象称作字节输出流
  • Reader抽象类的子类创建的流对象称作字符输入流
  • Writer抽象类的子类创建的流对象称作字符输出流。
  • 使用输入流通常包括4个基本步骤:
    • 设定输入流的源

    • 创建指向源的输入流

      • 使用FileInputStream类的下列构造方法创建指向文件的输入流。
      • FileInputStream(String name);
      • FileInputStream(File file);
      • 其中:参数name和file指定的文件称为输入流的源。
    • 让输入流读取源中的数据

      • int read() 读取单个字节的数据,返回字节值(0~255整数),如果未读出字节就返回-1。
      • int read(byte b[]) 读取b.length个字节到字节数组b中,返回实际读取的字节数。如果到达文件的末尾,则返回-1。
      • int read(byte b[], int off, int len) 读取len个字节到字节数组b中,并返回实际读取的字节数目。如果到达文件的末尾,则返回-1,参数off指定从字节数组的某个位置开始存放读取的数据。
    • 关闭输入流

      • 输入流.close

8.文件字符输入、输出流——10.4知识

  • Reader类提供的read方法以字符为单位顺序地读取源中的数据。

    • int read():
    • int read(char b[]):
    • int read(char b[], int off, int len):
    • void close():
    • long skip(long numBytes):
    • Writer流以字符为单位顺序地写文件,每次调用write方法就顺序地向目的地写入内容。 Writer类有如下常用的方法。
    • void write(int n): 向输出流写入一个字符。
    • void write(byte b[]): 向输出流写入一个字符数组。
    • void write(byte b[],int off,int length): 从给定字符数组中起始于偏移量off处取len个字符写到输出流。
    • void close(): 关闭输出流。

9.缓冲流——10.5知识

  • BufferedReader和BufferedWriter类创建的对象称作缓冲输入、输出流。二者的源和目的地必须是字符输入流和字符输出流。构造方法:

    • BufferedReader(Reader in);
    • BufferedWriter (Writer out);
  • BufferedReader和BufferedWriter类读写文件的方法:
    • readLine() 读取文本行
    • write(String s,int off,int len) 把字符串s写到文件中
    • newLine(); 向文件写入一个回行符

10.随机流——10.6知识

  • 使用RandomAccessFile类来创建一个随机访问文件流。RandomAccessFile类创建的流的指向既可以作为源也可以作为目的地。

    构造方法:
  • RandomAccessFile(String name,String mode) ;
  • RandomAccessFile(File file,String mode) ;

    相关方法:
  • seek(long a) 定位RandomAccessFile流的读写位置
  • getFilePointer() 获取流的当前读写位置

11.数组流——10.7知识

1.字节数组流

  • 字节数组输入流ByteArrayInputStream和字节数组输出流ByteArrayOutputStream分别使用字节数组作为流的源和目标。 ByteArrayInputStream构造方法及常用方法

    • ByteArrayInputStream(byte[] buf);
    • ByteArrayInputStream(byte[] buf,int offset,int length);
    • public int read();顺序地从源中读出一个字节
    • public int read(byte[] b,int off,int len);顺序地从源中读出参数len指定的字节数
  • ByteArrayOutputStream流构造方法及常用方法

    • ByteArrayOutputStream();
    • ByteArrayOutputStream(int size);
    • public void write(int b); 顺序地向缓冲区写入一个字节
    • public void write(byte[] b,int off,int len); 将参数b中指定的len个字节顺序地写入缓冲区
    • public byte[] toByteArray(); 返回输出流写入到缓冲区的全部字节

2.字符数组

  • CharArrayReader和CharArrayWriter类是字符数组流,使用字符数组作为流的源和目标。

12.数据流——10.8知识

  • DataInputStream和DataOutputStream类创建的对象称为数据输入流和数据输出流。
  • 构造方法:
    • DataInputStream(InputStream in)创建的数据输入流指向一个由参数in指定的底层输入流
    • DataOutputStream(OutnputStream out)创建的数据输出流指向一个由参数out指定的底层输出流

13.对象流——10.9知识

  • ObjectInputStream和ObjectOutputStream类创建的对象称为对象输入流和对象输出流。
  • 它的构造方法是:
    • ObjectInputStream(InputStream in)
    • ObjectOutputStream(OutputStream out)
  • 相关方法:
    • writeObject(Object obj) 将一个对象obj写入到一个文件
    • readObject() 读取一个对象到程序中
  • 所谓序列化:一个类如果实现了Serializable接口,那么这个类创建的对象就是所谓序列化的对象。

14.使用Scanner解析文件——10.11知识

使用Scanner类和正则表达式来解析文件。

1.使用默认分隔标记解析文件

  • 创建Scanner对象,并指向要解析的文件,例如:
File file = new File("hello.java");
Scanner sc = new Scanner(file);
  • sc将空白作为分隔标记
  • 相关方法next()依次返回file中的单词hasNext()判断file最后一个单词是否已被next()方法返回.

2.使用正则表达式作为分隔标记解析文件 : 创建Scanner对象,指向要解析的文件,并使用useDelimiter方法指定正则表达式作为分隔标记,例如:

    File file = new File("hello.java");
Scanner sc = new Scanner(file);
sc.useDelimiter(正则表达式);
  • sc将正则表达式作为分隔标记
  • 相关方法next()依次返回file中的单词hasNext() 判断file最后一个单词是否已被next()方法返回

15.文件对话框——10.12知识

  • 构造方法JFileChooser()创建初始不可见的有模式的文件对话框。然后文件对话框调用下述2个方法:showSaveDialog(Component a);、showOpenDialog(Component a);都可以使得对话框可见,只是呈现的外观有所不同,showSaveDialog方法提供保存文件的界面,showOpenDialog方法提供打开文件的界面。上述两个方法中的参数a指定对话框可见时的位置,当a是null时,文件对话框出现在屏幕的中央;如果组件a不空,文件对话框在组件a的正前面居中显示。

16.带进度条的输入流——10.13知识

  • 如果读取文件时希望看见文件的读取进度可以使用javax.swing包提供的输入流类:ProgressMonitorInputStream它的构造方法是:ProgressMonitorInputStream(Conmponent c,String s,InputStream);

17.文件锁——10.14知识

  • FileLock、FileChannel类处理Java提供的文件锁功能。它们分别在java.nio和java.nio.channels包中。
  • 输入、输出流读写文件时可以使用文件锁。
  • RondomAccessFile创建的流在读写文件时使用文件锁的步骤如下:

1.先使用RondomAccessFile流建立指向文件的流对象,该对象的读写属性必须是rw,例如:

RandomAccessFile input=new
RandomAccessFile("Example.java","rw");

2.input流调用方法getChannel()获得一个连接到地层文件的FileChannel对象(信道),例如

FileChannel channel=input.getChannel();

3.信道调用tryLock()或lock()方法获得一个FileLock(文件锁)对象,这一过程也称作对文件加锁.例如:

FileLock lock=channel.tryLock();

二、脚本截图

三、学习感受

《JAVA程序设计》_第六周学习总结的更多相关文章

  1. 20145337 《Java程序设计》第六周学习总结

    20145337 <Java程序设计>第六周学习总结 教材学习内容总结 输入\输出 InputStream与OutputStream 从应用程序角度来看,如果要将数据从来源取出,可以使用输 ...

  2. 20145218 《Java程序设计》第六周学习总结

    20145218 <Java程序设计>第六周学习总结 教材学习内容总结 第十章 输入/输出 10.1 InputStream与OutputStream 10.1.1 串流设计的概念 Jav ...

  3. 《Java程序设计》第六周学习总结

    20145224 <Java程序设计>第六周学习总结 教材学习内容总结 第十章输入和输出 10.1.1 ·若要将数据从来源中取出,可以使用输入串流:若要将数据写入目的地,可以使用输出串流. ...

  4. 20155304 2016-2017-2 《Java程序设计》第六周学习总结

    20155304 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 第十章 串流设计的概念 无论来源和目的地实体形式是什么,只要取得InputStream和Ou ...

  5. 201521123061 《Java程序设计》第六周学习总结

    201521123061 <Java程序设计>第六周学习总结 ***代码阅读:Child压缩包内 1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核 ...

  6. 201521123038 《Java程序设计》 第六周学习总结

    201521123038 <Java程序设计> 第六周学习总结 1. 本周学习总结 2. 书面作业 1.clone方法 1.1 Object对象中的 clone 方法是被protected ...

  7. #20175204 张湲祯 2018-2019-2《Java程序设计》第六周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第六周学习总结 教材学习内容总结 -第七章内部类与异常类要点: 一.内部类: Java支持在一个类中定义另一个类,这样的 ...

  8. 20175226 2018-2019-2 《Java程序设计》第六周学习总结

    20175226 2018-2019-2 <Java程序设计>第六周学习总结 教材学习内容总结 内部类与异常类 内部类:Java支持在一个类中定义另一个类(可以是static类) 外嵌类的 ...

  9. 学号 20175329 2018-2019-3《Java程序设计》第六周学习总结

    学号 20175329 2018-2019-3<Java程序设计>第六周学习总结 教材学习内容 第七章 内部类与异常类 内部类与外嵌类之间的重要关系如下: 内部类的外嵌类的成员变量在内部类 ...

  10. 20175209 《Java程序设计》第六周学习总结

    20175209 <Java程序设计>第六周学习总结 一.教材知识点总结 第七章 内部类与异常类 1.内部类 定义:在一个类中定义的另一个类称作内部类,包含内部类的类成为内部类的外嵌类. ...

随机推荐

  1. Windows Server 2016-DNS 新增或改进功能

    本章节补充介绍在 Windows Server 2016 中域名系统 (DNS) 服务器新增或已更改的功能相关信息,具体内容如下: 功能 新增或改进 描述 DNS 策略 新增 您可以配置 DNS 策略 ...

  2. Ambari安装HDP问题:User root is not allowed to impersonate anonymous.User: hcat is not allowed to impersonate ambari-qa

    User root is not allowed to impersonate anonymous 修改hadoop 配置文件 etc/hadoop/core-site.xml,加入如下配置项 < ...

  3. powerDesigner生成数据结构图以及对应sql导出方法

    1.下载powerDesigner 链接地址为http://soft.onlinedown.net/soft/577763.htm 2.打开软件,file -> new project,新建一个 ...

  4. 二、使用docker-compose搭建AspNetCore开发环境

    1 使用docker-compose搭建开发环境 我们的目标很简单:使用docker-compose把若干个docker容器组合起来就成了. 首先使用Nginx代理所有的Web程序,这样只需要在主机上 ...

  5. CDI服务

    前言 CDI(Contexts and Dependency Injection 上下文依赖注入),是JAVA官方提供的依赖注入实现,可用于Dynamic Web Module中,将依赖注入IOC/D ...

  6. markdown用法

    Markdown 语法的目标是成为一种适用于网络的书写语言.不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 撰写.不需要额外标注,只要直接加标签就可以了. 一.常用部分 ...

  7. debian The type initializer for 'System.Drawing.KnownColors' threw an exception

     Change the "System.Drawing" reference of "CoreCompat.System.Drawing"if you thro ...

  8. 使用 线性规划 解决 数字 排序问题, +Leapms模型

    问题 将如下一组数字从大到小排序. {10, 20, -32, 177, 0, -11.5, 19, 7, 6.2, -6.28, -2.71, 44} 解决办法 建立数学模型,给出各个数字的次序值. ...

  9. GraphQL学习过程应该是这样的

    记录一个从枯燥学习 GraphQL 的过程,到发现项目 Gitter,模仿项目 Github-Trending-API,最后做一个自己的学习项目 Github-Trending-GraphQL. 一开 ...

  10. C# 30分钟完成百度人脸识别——进阶篇(文末附源码)

    距离上次入门篇时隔两个月才出这进阶篇,小编惭愧,对不住关注我的卡哇伊的小伙伴们,为此小编用这篇博来谢罪. 前面的准备工作我就不说了,注册百度账号api,创建web网站项目,引入动态链接库引入. 不了解 ...