Java快速入门笔记(四)--输入输出

170 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

9 输入输出

9.1 异常处理

9.1.1 异常的基本概念

  • 又称为例外,是特殊的运行错误对象
  • java中声明了很多异常类,每个异常类都代表了一种运行错误,类中包含了
    • 该运行错误的信息
    • 处理错误的方法
  • 每当java程序运行过程中发生了一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常 出现异常时,处理方法有两种:
  • 不处理,但是将异常抛出到java虚拟机
  • 在自己的程序中捕获异常并处理异常 错误的分类:
  • 根据错误的严重程度不同,可以分为两类
    • 错误
      • 致命性的,程序无法处理
      • Error类是所有错误类的父类
    • 异常
      • 非致命性的,课编制程序捕获和处理
      • Exception类是所有异常类的父类 异常的分类:
  • 非检查型异常
  • 检查型异常

9.1.2 异常的处理

检查型异常的处理

  • 声明抛出异常
    • 不在当前方法内处理异常,可以使用throws字句声明将异常抛出到调用方法中(沿着调用栈)
    • 如果所有的方法都选择了抛出词异常,最后JVM将捕获它,输出相关的错误信息,并终止程序的运行
  • 捕获异常
    • 使用try{}catch(){}块,捕获到所发生的异常,并进行相应的处理 捕获异常的语法
  • 说明
    • try语句
      • 其后跟随可能产生异常的代码块
    • catch语句
      • 其后跟随异常处理语句,通常都要用到的两个方法:
      • getMessage()-返回一个字符串,对发生的异常进行描述。
      • printStackTrace()-给出方法的调用序列,一直到异常的产生位置
    • finally语句
      • 不论在try代码段是否产生异常,finally后的程序代码都会被执行。通常在这里释放内存以外的其他资源
  • 注意事项
    • 如果并列有多个catch语句捕获多个异常,则一般的异常类型放在后面,特殊的放在前面。(子类放在前面,超类放在后面)
try{
    statement(s)
}catch(exceptiontype name){
    statement(s)
}finally{
    statement(s)
}

9.2 输入输出流的概念

Java中预定义的I/O六类

  • 从流的方向划分
    • 输入流
    • 输出流
  • 从流的分工划分
    • 节点流(真正去访问文件,进行输入输出操作的流)
    • 处理流:对数据执行某种处理
  • 从流的内容划分
    • 面向字符的流(专门用于字符数据)
    • 面向字节的流(用于一般目的,图像,声音,视频):二进制格式,可节省空间和时间 面向字符的流:
  • 源或目标通常是文本文件
  • 能实现内部各式和文本文件中的外部格式之间转换
    • 内部各式:16-bit char数据类型
    • 外部个事“UTF”
    • ASCII码及非ASCII码 面向字符的抽象流类——Reader和Writer 例如用FileReader/FileWriter来读/写文本文件

面向字节的抽象流类——InputStream和OutputStream 标准输入输出流对象:

  • System类的静态成员变量
    • System.in:InputStream类型的,代表标准输入流,默认状态对应于键盘输入
    • System.out:PrintStream类型的,代表标准输出流,默认状态对应于显示器输出
    • System.err:InputStream类型的,代表标准错误信息输出流,默认状态对应于显示器输出 按类型输入/输出数据
  • printf方法:
    • System.out.printf("%-12s is %2d long",name l);
    • System.out.printf("value=%2.2F",value);
    • %n是平台无关的换行标志
  • Scanner(处理流,不直接访问磁盘或者键盘)
    • Scanner s=new Scanner(System.in)

10. Java基础类库(API)

10.1. Serializable

“持久化”意味着对象的“生存时间”并不取决于程序是否正在执行——它存在或“生存”于程序的每一次调用之间。通过序列化一个对象,将其写入磁盘,以后在程序再次调用时重新恢复那个对象,就能圆满实现一种“持久”效果。

10.2. StringUtils

StringUtils.isBlank(String str)方法可判断str

  1. 是否为 null
  2. 是否为 ""是否为 ""
  3. 是否为空字符串(引号中间有空格) 如: " "。是否为空字符串(引号中间有空格) 如: " "。