【Java回顾】Day2 正则表达式----异常处理

参考资料:菜鸟教程

https://www.runoob.com/java/java-exceptions.html

正则表达式 有一部分没看完

  • 介绍
    • 字符串的模式
    • 搜索、编辑或处理文本
    • java.util.regex包,包含了pattern和mathcer类,用于处理正则表达式的匹配操作。
  • 捕获组
    • 把多个字符当一个单独单元进行处理,堆括号内的字符分组来创建。从左到有看左括号来编号分组
    • (A(B©))
      • ((A)(B)©)
      • (A)
      • (B©)
      • ©
  import java.util.regex.Matcher;//查找,匹配,替换
  import java.util.regex.Pattern;//编译正则表达式
  public class RegexMatches
  {
      public static void main( String[] args ){

          // 按指定模式在字符串查找
          String line = "This order was placed for QT3000! OK?";
          String pattern = "(\\D*)(\\d+)(.*)";
          //(\D*)匹配0或多个非数字字符;(\d+)匹配1或多个数字字符;(.*)匹配0或多个任意字符


          // 创建 Pattern 对象,编译正则表达式
          Pattern r = Pattern.compile(pattern);

          // 现在创建 matcher 对象
          Matcher m = r.matcher(line);
          //
          if (m.find( )) {//查找下一个匹配项
              System.out.println("Found value: " + m.group(0) );//整个捕获
              System.out.println("Found value: " + m.group(1) );
              System.out.println("Found value: " + m.group(2) );
              System.out.println("Found value: " + m.group(3) );
          } else {
              System.out.println("NO MATCH");
          }
      }
  }
  • JAVA转义语法
    • Java 的正则表达式中,两个 \ 代表其他语言中的一个 ****, \\d
  • Matcher类的方法

Java 方法

  • System.out.println()

    • println() 方法
    • System 系统类
    • out 标准输出对象
  • 命名:以小写字母为首,后面的单词则用大写字母开头写,不使用连接符

  • 组成

    修饰符 返回值类型 方法名(参数类型 参数名){
        ...
        方法体
        ...
        return 返回值;
    }
    
  • 在一些其它语言中方法指过程和函数。一个返回非void类型返回值的方法称为函数;一个返回void类型返回值的方法叫做过程。

  • 方法签名:返回类型、方法名和参数列表。方法重载,例如int方法换为double方法

  • 变量作用域

    • 方法内的参数是一个局部变量
  • 构造方法(Constructor)

    • 创建类的对象的特殊方法,当使用new,构造方法会自动调用。
    • 方法名与类名相同
    • 没有返回类型,也没有void
    • 可以重载
    • 用于在在创建对象时初始化对象的状态
  • 可变参数,可以指定不定量的参数,必须是最后一个参数。

    • typeName... parameterName

Java构造方法

  • 作用

    • 初始化对象的属性
    • 保证对象初始化的完整性
  • 特点

    • 与类名相同
    • 没有返回类型 也没有void
    • 自动调用
    • 不能直接调用 new
    • 支持重载
    • 默认构造方法
    • this关键字使用
    • 不能被继承,但可以被调用
    • 对象初始化保障
  • 构造方法的类型

    • 无参构造方法

      • 默认 public Person(){}
    • 有参构造方法

      • 在创建对象时为属性赋值
        public class Person {
            String name;
            int age;
      
            public Person(String name, int age) {
                this.name = name;
                this.age = age;
            }
        }
      
      • Person p = new Person("Alice", 25);
  • 构造方法的重载

    • 在同一个类中定义多个构造方法,只要参数列表不同即可
  • 构造方法中的this关键字

    • 引用当前对象的属性和方法

    • 调用另一个构造方法

      • 使用 this() 调用当前类的其他构造方法

      public Person(String name) {

      this(name, 0); // 调用另一个双参数的构造方法

      }

      public Person(String name, int age) {

      this.name = name;

      this.age = age;

      }

Java流(Stream)、文件(File)、IO

  • 允许程序与外部数据(文件、网络、系统输入等)进行交互
  • 核心包:java.io 处理数据流、文件读写、序列化以及数据格式化的工具
  • 输入流从一个源读取数据,输出流标识向一个目标写数据

步骤

  • 读取控制台输入
    • 输入由System.in完成

    • 获得一个绑定到控制台的字符流

      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      
      • System.in 输入流
      • InputStreamReader(System.in) 将字节流转换为字符流
      • BufferedReader 缓冲字符输入流,它通过缓冲区提高了读取效率
  • 从控制台读取多字符输入
    • int read( ) throws IOException
    • 每次调用 read() 方法,它从输入流读取一个字符并把该字符作为整数值返回。 当流结束的时候返回 -1。该方法抛出 IOException
  • 从控制台读取字符串
    • BufferedReader 的 readLine() 方法
    • String readLine( ) throws IOException
  • 控制台输出
    • print()
    • println()
    • 由类PrintStream定义,其继承了OutputStream类,并且实现了方法write()。写操作。System.out是该类对象的一个引用。
    • void write(int byteval) //将 byteval 的低八位字节写到流中
  • 读写文件
    • 字节流(处理二进制数据,文本、图像、视频等)
    • 字符流(处理文本数据)
    • 辅助类(其他重要类)辅助类提供对文件、目录以及随机文件访问的支持。

两个重要流

  • FileInputStream
    • 从文件读取数据
    • InputStream f=new FileInputStream("C:/java/hello")
    • File f = new File("C:/java/hello");
      InputStream in = new FileInputStream(f);
  • FileOutputStream
    • 创建一个文件并向文件中写数据,如果不存在就创建该文件
    • OutputStream f=new FileOutputStream("C:/java/hello")
    • File f = new File("C:/java/hello");
      OutputStream fOut = new FileOutputStream(f);

Java的目录

  • File类创建文件夹

    • mkdir() 创建文件夹,成功则返回true,失败则返回false
    • mkdirs() 创建文件夹和它的所有父文件夹
  • 读取目录

    • if(f1.isDirectory()) 如果是目录,返回True
    • 提取它包含的文件和文件夹的列表
    • String s[] = f1.list();
  • 删除目录或文件

    • java.io.File.delete()

Java Scanner 类

  • java.util.Scanner 获取用户的输入
  • Scanner s=new Scanner(System.in);
  • 获取输入的字符串:next() nextLine()
    • next() 和nextLine()区别

      • next() 读到有效字符后才可以结束输入;不能得到带有空格的字符串;对输入有效字符之前的空白,next()自动去掉空格;输入有效后将后面的空格作为分隔符或者结束符
      • nextLine() 以Enter为结束符,返回的是enter之前的所有字符;可以获得空白
  • 判断是否还有输入的数据,hasNext和hasNextLine

Java异常处理

  • 异常是程序中的一些错误,但并不是所有的错误都是异常。
  • 异常发生的原因|用户、程序、物理错误
    • 用户输入了非法数据。
    • 要打开的文件不存在。
    • 网络通信时连接中断,或者JVM内存溢出。

三种异常

  • 检查性异常,用户错误或问题引起的异常,异常在编译时强制要求程序员处理。
    *

      try{
      //可能会抛出异常的代码
      }catch(IOException e){
      //处理异常的代码
      }
    
  public void readFile() throws IOException{
  //可能会抛出IOException
  }
  • 运行时异常 在编译时不强制要求处理,由程序中的错误引起的,例如NullPointerExcepton、ArrayIndexOut、OfBoundsException等
    *

      try{
      //可能会抛出异常的代码
      }catch(NullPointerException e){
      //处理异常的代码
      }
    
  • 错误:错误不是异常,而是脱离程序员控制的问题,错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,他们在编译也检查不到的。

关键字和类【支持异常处理】

  • try 包裹可能会抛出异常的代码块。
  • catch 捕获异常并处理异常的代码块。
  • finally 包含无论是否发生异常都需要执行的代码块
  • throw 手动抛出异常
  • throws 在方法声明中指定方法可能抛出的异常。
  • Exception 所以异常类的父类,提供一些方法来获取异常信息,如getMessage() printStackTrace()等。

Exception类的层次

  • 从java.lang.Exception类继承的子类。
  • Error 用来指示运行时环境发生的错误。JAVA程序中,通常不捕获错误。

JAVA内置异常类

JAVA异常方法

略,有需要就查表

捕获异常

  • try和catch关键字可以捕获异常,称为保护代码
  try{
  //程序代码
  }catch(ExceptionName e1)
  {
  //catch块
  }

多重捕获块 1个try多个catch

  • 一个try代码块后面跟随多个catch代码块的情况,匹配不同的错误类型
  try{
     // 程序代码
  }catch(异常类型1 异常的变量名1){
    // 程序代码
  }catch(异常类型2 异常的变量名2){
    // 程序代码
  }catch(异常类型3 异常的变量名3){
    // 程序代码
  }

throws/throw关键字

  • throw 在代码中抛出异常
  • throws 在方法声明中指定该方法可能抛出的异常。当方法内部抛出指定类型的异常时,会处理异常。
  • 一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。

finally关键字

  • 无论是否发生异常,finally代码块中的代码总会被执行。在finally代码块中,可以运行清理类型等收尾善后性质的语句。
  try{
    // 程序代码
  }catch(异常类型1 异常的变量名1){
    // 程序代码
  }catch(异常类型2 异常的变量名2){
    // 程序代码
  }finally{
    // 程序代码
  }
  • catch不能独立于try存在,try也不能独立使用。

try-with-resources

  • 自动管理资源,确保资源在使用后能够及时关闭,避免资源泄露。
  • 自动关闭在try块中声明的资源,无需显式地在finally块中关闭。
  try (resource declaration) {
    // 使用的资源
  } catch (ExceptionType e1) {
    // 异常块
  }

声明自定义异常

  • 必须是Throwable的子类
  • 检查性异常类,Exception类
  • 运行时异常类,RuntimeException类
  • class MyException extends Exception{
    }

通用异常

  • JVM(Java虚拟机)异常:JVM抛出的异常或错误
  • 程序级异常:由程序或API程序抛出的异常
相关推荐
Tiandaren9 分钟前
医学图像分析工具02:3D Slicer || 医学影像可视化与分析工具 支持第三方插件
c++·人工智能·python·深度学习·3d·开源
夜半被帅醒13 分钟前
JAVA创建绘图板JAVA构建主窗口鼠标拖动来绘制线条
java·开发语言·计算机外设
所愿ღ23 分钟前
Java线程
java·开发语言·笔记
荔枝点~23 分钟前
使用GitLab+Jenkins搭建CICD执行环境
java·ci/cd·gitlab·jenkins·运维开发
EnochChen_31 分钟前
PyTorch快速入门教程【小土堆】之Sequential使用和小实战
人工智能·pytorch·python
躲在没风的地方1 小时前
spring cloud微服务分布式架构
java·spring boot·spring cloud·微服务·架构
半夏知半秋1 小时前
python中常用的内置函数介绍
服务器·开发语言·笔记·后端·python·学习
视觉人机器视觉1 小时前
halcon中图像滤波分为空间域和频域两种方法
图像处理·python·计算机视觉
二十雨辰1 小时前
[微服务]分布式搜索--数据聚合
java·elasticsearch
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS海滨学院班级回忆录系统(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·maven·intellij-idea