《JAVA程序设计》_第六周学习总结

时间:2022-08-25 15:55:20

一、本周学习内容

1.内部类——7.1知识

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

《JAVA程序设计》_第六周学习总结

2.匿名类——7.2知识

  • 匿名类可不用显式地声明一个类的子类,用子类创建一个对象
  • 匿名子类的形式
new Bank(){
匿名类的类体;
}
  • 匿名类的特点
    • 匿名类可继承、重写父类的方法
    • 匿名类是内部类
    • 匿名类可访问外嵌类的变量和方法,不可以声明static成员变量和static方法
    • 用匿名类创建对象时,要直接使用父类的构造方法

《JAVA程序设计》_第六周学习总结

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

《JAVA程序设计》_第六周学习总结

3.异常类——7.3知识

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

《JAVA程序设计》_第六周学习总结

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

《JAVA程序设计》_第六周学习总结

4.断言

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

《JAVA程序设计》_第六周学习总结

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

《JAVA程序设计》_第六周学习总结

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程序设计》_第六周学习总结

三、学习感受

《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. &num;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. XML数据的解析

    XML数据的解析 相比于JSON数据解析而言,XML数据解析可能会让更多的童鞋感觉到吃力,对我来说,同样认为JSON数据好像让人感觉比较友好,不过对于程序开发者来说,无非就是这两种数据解析占比较大的部 ...

  2. (转)Silverlight 与 JS交互

    转自 http://www.cnblogs.com/wt616/archive/2011/10/08/2201987.html 1.Silverlight直接调用JS的函数: 这个很简单,只要在HTM ...

  3. Mac下DIY文件浏览器

    2015-07-14 15:07:53 Mac下的finder不能浏览Linux文件目录, 一些优秀的资源管理器是收费的..... 于是想到了既然Mac的本质是类Unix, 而在windows下查看L ...

  4. kylin学习笔记

    阅读官网,学到哪就写到哪 1.需要先建立Model 2.kylin需要配置事实表,纬度表:可以自定义join.  我的用法和官方建议的不同,我是直接在hive中将所有的取join成一个单表,再根据单表 ...

  5. python学习道路&lpar;day2note&rpar;&lpar;数据类型,运算符,字符串,列表&rpar;

    一,数据类型 1.1数字 数字分为int(整型),long(长整型),float(浮点型) 1.1.1 int整型的取值范围为 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31- ...

  6. asp&period;net 实现&OpenCurlyDoubleQuote;九连环”小游戏

    asp.net 实现"九连环"小游戏 wildcatsky(原作) public Class ChinaRing1  Inherits System.Web.UI.Page #Re ...

  7. arguments 函数内部属性

    1.arguments 是在function方法里面的,是实参数组,用法是挺多的,下面来记录一下 2.利用arguments实现方法的重载 //01.使用argument模拟方法重载 function ...

  8. Codevs 1001 舒适的路线 2006年 NOIP全国联赛提高组

    1001 舒适的路线 2006年 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观 ...

  9. javascript 中的console&period;log的作用

    主要是方便你调式javascript用的.你可以看到你在页面中输出的内容. 相比alert他的优点是: 他能看到结构话的东西,如果是alert,淡出一个对象就是[object object],但是co ...

  10. EF 下如何更新数据表数据

    转载请注明出处:http://www.cnblogs.com/zhiyong-ITNote/ 一直不习惯linq的扩展方法,每次用的时候,贼不顺手,尤其是查数据的时候,这不更新个数据库这么简单地需求都 ...