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 空白字符:[ \t\n\x0B\f\r]
\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.匿名内部类
==============================================================================

时间: 2024-08-05 05:16:57

Java笔记9-正则表达式的相关文章

Java笔记:正则表达式

一.基础知识 正则表达式是描述字符序列的一串字符.这种通用的描述被称为模式,可用于在其他字符序列中查找匹配.Java的正则表达式由Pattern和Matcher组成,Pattern用于定义正则表达式,Matcher用于在其他序列中匹配模式. 二.语法 正则表达式由常规字符.字符类.通配符及量词构成. 常规字符根据自身进行匹配. 字符类是一组字符,通过在方括号之间放置字符可指定字符类. 通配符可以匹配任意字符. 量词决定表达式将被匹配的次数. ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束

java笔记--正则表达式的运用(包括电话,邮箱验证等)

正则表达式 正则表达式符号:"." : 任意字符"\\d" : 0-9任何数字"\\D" : 任何非数字"\\s" : 空白字符,如'\t','\n'"\\S" : 非空白字符"\\w" : 可用作标识符的字符,不包括'$'"\\W" : 不可用作标识符的字符"\\p{Lower}" : 小写字母{a-z}"\\p{Upper}"

Java基础巩固--正则表达式

本篇文章是学习尚学堂的关于正则表达式的视频教程时,所做的笔记.供广大编程爱好者学习之用,也留给日后自己复习使用! 1.为什么要有正则表达式? 正则表达式可以方便的对数据进行匹配,可以进行更加复杂的字符串验证.拆分.替换功能. 例如,现在要判断一个字符串是否全部由数字构成,若不使用正则表达式,代码如下: public static boolean isAllNum(String string){         char[] charArr = string.toCharArray();     

6.2-全栈Java笔记:异常处理机制的分类

异常分类 JDK 中定义了很多异常类,这些类对应了各种各样可能出现的异常事件,所有异常对象都是派生于Throwable类的一个实例.如果内置的异常类不能够满足需要,还可以创建自己的异常类. 图1 异常的分类  Error Error类层次描述了Java运行时系统内部错误和资源耗尽错误.这类错误是我们无法控制的,同时也是非常罕见的错误.所以在编程中,不去处理这类错误. Error表明系统JVM已经处于不可恢复的崩溃状态中.我们不需要管他. 图2 java.lang包中Error的类 Error与E

15.1-全栈Java笔记:Java事件模型是什么?事件控制的过程有哪几步??

应用前边两节上一章节的内容,大家可以完成一个简单的界面,但是没有任何的功能,界面完全是静态的,如果要实现具体功能的话,必须要学习事件模型. 事件模型简介及常见事件模型 对于采用了图形用户界面的程序来说,事件控制是非常重要的. 一个源(事件源)产生一个事件并把它(事件对象)送到一个或多个监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接收,监听器将处理这些事件. 一个事件源必须注册监听器以便监听器可以接收关于一个特定事件的通知. 每种类型的事件都有其自己的注册方法,一般形式为: v

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

13.1-全栈Java笔记:打飞机游戏实战项目|AWT技术|MyGameFrame

简介和项目目标 通过游戏项目学习整个Java基础知识体系,我们做了精心的设计,让每一章知识都能获得应用. 比如:多线程用来实现动画效果.容器实现对于多发炮弹的存取和处理.常用类等等的应用. 寓教于乐,让大家迅速入门,更希望通过喜闻乐见的小游戏,让大家爱上编程,爱上"程序员". 老鸟建议 很多朋友会疑惑:"游戏项目,又不能拿到企业面试中,为什么要讲?" 这是一种太过于功利的想法.就像,我们说:"今天吃个馒头,又不是长高,为什么要吃呢?" 游戏项目的

Java笔记---部署 JavaWeb 项目到云服务器

一.前言 前面我们已经尝过了在云服务器上部署代码的甜头了,现在主菜就要上场了,那就是将我们的 JavaWeb 项目部署到云服务器上.兴奋吧?淡定淡定~ 二.项目部署 我们对于 Java Web 项目在本地机器(无论是 Windows 还是 Linux)上的部署已经了然于心了,那么对于在云服务器上部署 Java Web 项目又是如何操作的呢? 其实很简单,还是离不开 Web 项目部署的那三点: ① 基础的 JDK 环境 ② 一个 Web 服务器.如 Tomcat.JBoss ③ 一款数据库.如:m

JAVA 笔记 七

JAVA笔记七 this:就代表本类的对象,this代表它所在函数所属对象的引用简单说:那个对象在调用this所在的函数,this就代表那个对象静态:static 用法:是一个修饰符,用于修饰成员(成员变量,成员函数)当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用.类名.静态成员static特点1.随着类的加载而加载2.优先于的对象存在3.被所有对象所共享4.可以直接被类名所调用实例变量和类变量的区别:1.存放位置. 类变量随着类的加载而存在与方法区中. 实例

JAVA笔记六

JAVA笔记总结六 把大象放入冰箱的几步: 面向对象的三个特征:封装,继承,多态 JAVA开发实际上就是找对象使用,没有对象就创建一个对象 找对象,建立对象,维护对象的关系 类和对象的关系:类是对现实生活中实物的描述: 对象就是这类事物,实实在在存在的个体 匿名对象:匿名对象可以作为参数进行传递也可以作为对象方法进行一次调用