zoukankan      html  css  js  c++  java
  • Java笔记9-正则表达式

    提纲:
    1.正则表达式
    2.常见的异常
    3.内部类
    ------------------------------------------------------------------
    JDK 1.4以后Java正式对正则表达式支持

    学习目标:只要求大家能够独立写出一些简单的正则表达式!
    复杂的我们借助第三方搜索!!!

    场景:它是用来规范用户输入格式的!!!

    注册页面

    请您输入用户名: (*用户名以小写字母开头,由数字字母组成,长度不能少于6位)


    int n = sc.nextInt();//它只能用来接受int类型的数据
    一旦用户输入的是String
    因此需要对用户的输入加以规范!!!输入的字符必须是数字类型的字符
    ---------------------------------------------------------------------------------------------
    API:java.util.regex

    Pattern:正则表达式匹配模板类

    常用方法:
    1.将给定的正则表达式匹配到模式中
    static Pattern compile(String regex);

    2.创建匹配给定输入与此模式的匹配器
    Matcher matcher(CharSequence input)

    3.编译给定正则表达式并尝试将给定输入与其匹配
    static boolean matches(String regex, CharSequence input)
    java.util.regex
    类 Matcher

    常用方法:

    1.尝试查找与该模式匹配的输入序列的下一个子序列
    boolean find()

    2.返回以前匹配的初始索引
    int start()

    int end()

    3.返回由以前匹配操作所匹配的输入子序列
    String group()

    正则表达式:
    预定义字符类
    . 任何字符(与行结束符可能匹配也可能不匹配)
    d 数字:[0-9]
    D 非数字: [^0-9]
    s 空白字符:[ x0Bf ]
    S 非空白字符:[^s]
    w 单词字符:[a-zA-Z_0-9]
    W 非单词字符:[^w]

    Greedy 数量词
    X? X,一次或一次也没有
    X* X,零次或多次
    X+ X,一次或多次
    X{n} X,恰好 n 次
    X{n,} X,至少 n 次
    X{n,m} X,至少 n 次,但是不超过 m 次
    --------------------------------------------------------------------------------
    异常:
    一种对象,异常的顶级数据类型:java.lang.Throwable


    根据异常的严重程度又分为:
    Error(错误):程序在运行的时候遇到了非常严重的问题,这些问题一旦出现
    不需要程序员手动进行处理!

    StackOverflowError 堆栈溢出

    OutOfMemoryError 内存泄漏

    Exception(异常):程序在运行的过程当中出现了不正常的情况!
    又分为两大类:

    运行时异常:未检测异常

    InputMismatchException 由 Scanner 抛出,表明获取的标记与期望类型的模式不匹配,或者该标记超出期望类型的范围

    IllegalArgumentException 非法参数异常

    ArrayIndexOutOfBoundsException 数组下标越界异常

    NullPointerException 空指针异常

    ClassCastException 类型转换失败异常


    非运行时异常:已检测异常

    ParseException 解析异常

    InterruptedException 中断异常

    IOException 异常

    SQLException sql语句异常

    FileNotFoundException 文件没有被发现异常

    注意:1.所有的RuntimeException运行时异常都是非运行时异常的子类!!!
    2.所有的运行时异常正常情况下是不需要程序手动进行处理的!!!
    只需要程序员平时编码谨慎点!!!

    3.所有的非运行时异常是需要程序员手动进行处理的

    关于非运行时异常的处理方式又分为积极处理和消极处理

    积极处理方式一:
    推荐使用:可以针对不同的异常做出不同的处理策略
    try{
    statement1;
    statement2;//如果此处出现了异常,那么try块中的代码将不再继续向下执行,而是进入到
    //对应异常类型的catch块中
    statement3;
    return;
    }catch(异常类型1 异常对象){
    //异常的处理-打印异常信息
    }catch(异常类型2 异常对象){
    //异常的处理
    }catch(异常类型3 异常对象){
    ///
    }finally{

    }

    //注意:1.如果多个catch块中的异常类型存在父子类关系,
    要将子类放在父类的上面!!!

    2.try...catch...finally一起使用情况,finally{}中的代码
    无论try{}是否出现异常,finally中的代码永远会执行,除非
    try中有System.exit(0);

    3.在finally块中可以做一些收尾的操作!资源的关闭,缓存的刷新
    或者IO流的关闭等等!!!

    4.如果try中有return语句,并且try{}代码执行的时候没有出现任何
    异常,那么请问此时finally{}代码是否还执行?

    答:肯定会!程序在读到return的时候,赶紧跑到finally中执行,执行完
    之后再return死去!!!

    try不一定必须和catch一起使用!!!

    try{
    ....
    }finally{
    ...
    }

    积极处理方式二:
    JDK7.0以后的新特性

    try{
    ....
    ....
    ....
    }catch(异常类型1 | 异常类型2 | 异常类型3 异常对象名){
    ...
    }

    积极处理方式三:
    try{
    ....
    }catch(总父类(Exception) 对象){
    ....
    }
    ---------------------------------------------------------------------------
    消极处理:

    1.如果抛出的异常是运行时异常,则方法上面不需要再通过
    throws 异常类型

    2.如果方法中抛出的异常是非运行时异常
    [则在方法体中需要
    throw 异常对象]

    同时需要在方法上
    throws 异常类型

    消极处理的时候,无论异常抛给谁!最终肯定要有一个去抓取
    除非这个异常被抛给了main方法,一旦出现异常,那么JVM将停止!!!

    关于消极处理的时候,异常抓取的时机

    1.如果一个方法b()中抛出了一个异常XXX
    如果另一个方法a()中也出现了一个异常XXX,与b()中出现的异常是相同的
    a()中又会去调用b()
    那么可以选择在b()方法中将XXX异常抛出,然后在a()中统一抓取
    --------------------------------------------------------------------------------
    自定义异常:
    自己写一个类,然后去继承Exception
    添加5个构造方法!!!
    --------------------------------------------------------------------------------
    内部类:
    只需要能够看懂!!!


    1.成员内部类
    将内部的类当成外部的类中的一个成员属性存在!
    注意点:
    1.内部类可以访问到外部类中的所有的属性
    2.如果内部类当中的某个属性和外部类中的属性同名
    那么需要通过this.属性名来访问内部的!
    3.创建对象:外部类.内部类 对象名 = 外部类对象名.new 内部类();

    2.静态内部类
    将内部类当成外部类的中的静态成员属性存在
    注意点:1只可以访问外部类中的静态属性
    3.局部内部类

    4.匿名内部类
    ==============================================================================

  • 相关阅读:
    platform_device和platform_driver
    理解和认识udev
    platform_device和platform_driver
    bzImage的概要生成过程
    shell 字符表
    分析mtk6516如何加入自己的驱动
    理解和使用Linux的硬件抽象层HAL
    bzImage的概要生成过程
    理解和认识udev
    shell 字符表
  • 原文地址:https://www.cnblogs.com/tarek/p/5426206.html
Copyright © 2011-2022 走看看