JAVA 笔记(三)

简介: JAVA 笔记(三)

java中的异常

Throwable类 java中错误的定级父类


其下有两大子类

Error :  JRE出现的错误 。程序员无能为力,我们不能通过代码的方式解决这类错误


Exception :  程序级别的错误 。我们可以通过代码捕获该类异常,并可以解决


java中使用try catch来完成对异常的捕获和解决的


try{

  可能出现错误的代码片段

}

try语句块:由try关键字和一组大括号{}构成。

在大括号中编写可能出现错误的代码。

try块可以独立存在。

try块后通常会紧跟1-n个catch块,catch块是用来捕获并解决出现的这类异常的。catch块可以有若干个。


catch(SomeException e){

 异常的解决代码片段

}


通常情况下try后面都要写catch


java中异常抛出的机制

jvm在运行我们的程序时,若出现了一个异常,jvm会创建一个该类异常的实例并抛出,这时jvm会检查出现异常的代码外是否有try块包围,若有则检查try后面的所有catch块。将创建的异常实例顺序调用catch,将调用兼容该异常实例的catch块进行异常处理。


catch定义捕获类型的顺序应该是子类异常在前,父类异常在后。


为了防止我们程序出现catch中未列举的异常而导致程序非正常结束,我们应在最后一个catch中捕获Exception异常。


jvm创建异常实例并通过catch块将该异常交给我们。对于异常我们有几个常用方法。

getMessage() : 用来获取有关异常事件的信息


printStackTrace() : 输出异常的堆栈内容


throw关键字, 用于主动抛出异常


throows关键字

在声明方法时声明该方法可能抛出的异常。一旦声明了,调用该方法的调用者就需要强制捕获该异常。


通常情况,方法中抛出什么异常就应该在方法声明时声明这种异常的抛出!

有一个例外, RuntimeException及其子类在方法中被抛出时 ,不需要在方法声明时声明该类异常的抛出


RuntimeException的常见子类:

1  NullPointerException :

 空指针异常


2  NumberFormatException :

 数字格式异常


3  ArrayIndexOutOfBoundsException

 数组下标越界


4  ClassCastException

 类造型异常


RuntimeException属于 非检查期异常,也就是说在编译过程中,会忽略检查该类异常在方法声明中定义的抛出。


finally关键字

finally块出现在异常捕获机制的最后catch块后。或try块后。

finally块无论程序是否出错都将强制执行。
finally块只能写一次, finally中不应该书写return语句,否则方法的正常返回值都不能得到返回了。


子类继承父类并重写父类方法时,若父类声明了异常抛出throws

子类重写方法时可以:

不处理异常(不设定throws)

仅抛出父类定义的部分异常,抛出父类定义的异常的子类异常


不可以:

throws父类没有的异常

throws父类方法声明的异常的父类异常


throw是抛出异常,当方法中遇到该语句时,方法结束,并抛出异常。所以throw后面不要再有必然会执行的语句,否则编译错误。


File类

用于描述文件系统中的一个文件或目录。

File的一个实例就代表一个目录和

文件。

通过File实例我们可以得知它所表示的文件或目录的名字,大小,修改日期等等信息。但是不能对文件内容进行操作。


编写一个方法。

public void deleteFile(File dir){


}

传入的File是一个目录,要做到成功将该目录删除,前提是该目录内部有多级目录和文件

FileFilter文件过滤器, FileFilter是一个接口,里面必须实现一个抽象方法accept()用来定义过滤文件的规则。    


文件过滤器用在File的重载方法 listFiles(FileFilter filter) 上

用于获取当前目录下的部分子项


RandomAccessFile, 可以读写文件内容的类。


java文件模型,硬盘中存储的一切都是字节。byte by byte,使用RandomAccessFile可以打开一个文件并对文件进行读写操作。


打开文件可分为只读和读写形式。打开文件操作完毕后要关掉,释放资源。


java的IO  I/O  input/output


输入流和输出流


输入流 :用于 读取数据的流 ,  输出流 : 用于写出数据的流,流的方向是基于程序定的


流根据处理单位分为 :字节流 和 字符流

字节流: 以字节为单位读写数据

字符流: 以字符为单位读写数据


流分为:

低级流 :节点流

高级流 :处理流,过滤流


低级流: 数据有明确来源和去向

高级流: 高级流不能独立存在,需要处理另一个流。


文件输入、输出流

FileInputStream:文件输入流

FileOutputStream:文件输出流


缓冲字节输入流与缓冲字节输出流

BufferedInputStream

BufferedOutputStream


BIS&BOS是高级流


内部维护着一个缓冲区。可以进行高效的读写操作。


区分高级流的最显著特点是看构造方法,若需要传入其他流,那么这个流就是一个高级流。


高级流不能独立存在,因为没有意义,高级流的作用就是对它处理的流中的数据进行加工方便我们读写的。

净水器就是典型的现实中的高级流

DIS & DOS

DataInputStream

DataOutputStream

可以方便的对基本类型数据进行读写。


字符流

以字符为单位读写数据的流

从类的命名上就很容易区分字节流和字符流

字符输入流以 Reader结尾

字符输出流以 Writer结尾


流其实都是以字节进行读写的, 字符流只是在 字节流的基础上以字符为单位进行读写数据,所以 字符流都是高级流。


字符输入流:

InputStreamReader


字符输出流

OutputStreamWriter


字符流可以使用 重载构造方法,在 创建流的时候指定编码集,这样可以以指定的 编码集进行读写数据。


InputStreamReader(InputStream in,String charset)


OutputStreamWriter(OutputStream out,String charset)


缓冲字符输入输出流

BufferedReader

BufferedWriter

以 行为单位进行读写数据。


FileReader与FileWriter

文件字符输入流和文件字符输出流

用于读写 文本文件的流

可以 方便的读取文本文件,但是也有缺点, 不支持设定字符集


PrintWriter

另一种缓冲字符输出流


构造方法:

PrintWriter(File file):创建向给定文件写字符的字符输出流


PrintWriter(OutputStream out):

创建一个基于 字节输出流的缓冲字符输出流


PrintWriter(Writer writer):

将 字符输出流转换为缓冲字符输出流。


PrintWriter(String fileName):

创建给定路径的 文件的字符输出流。

相关文章
|
21天前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
38 1
|
22天前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
30 2
|
1月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
12天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
12天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
12天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
|
21天前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文档重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android library开发建议以及在Kotlin和Java之间互相调用的方法。
18 1
|
21天前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。若需快速入门,建议查阅“简洁”系列教程。本文重点探讨Kotlin与Java共存的高级话题,包括属性访问、空安全、泛型处理、同步机制及SAM转换等,助你在项目中逐步引入Kotlin。
18 1
|
22天前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
Kotlin语法笔记(28) -Kotlin 与 Java 混编
24 2
|
28天前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”