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.匿名内部类
==============================================================================
Java笔记9-正则表达式的更多相关文章
- 【java学习笔记】正则表达式
一.正则表达式 1.预定义字符集 . 表示任意一个字符 \d 表示任意一个数字 \w 表示任意一个单词字符(只能是数字.字母.下划线) \s 表示任意一个空白字符(\t\r\n\f\x0B) \D ...
- Effective Java笔记一 创建和销毁对象
Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...
- 9.JAVA中的正则表达式
一.JAVA中的正则表达式 1.概念:以某种特定的方式描述字符串 1.Java中正则表达式的规则 ? #{0,1}-?有一个-或者没有 \\ #表示一个" ...
- java密码验证正则表达式校验
,正则表达式就是记录文本规则的代码.php密码验证正则表达式(8位长度限制)<?php //密码验证 $password = "zongzi_Abc_oo13a2"; $n ...
- java笔记00-目录
--2013年7月26日17:49:59 学习java已久,趁最近有空,写一个总结: java笔记01-反射:
- JAVA自动生成正则表达式工具类
经过很久的努力,终于完成了JAVA自动生成正则表达式工具类.还记得之前需要正则,老是从网上找吗?找了想修改也不会修改.现在不用再为此烦恼了,使用此生成类轻松搞定所有正则表达式.赶快在同事面前炫一下吧. ...
- JAVA中的正则表达式--待续
1.关于“\”,在JAVA中的正则表达式中的不同: 在其他语言中"\\"表示为:我想要在正则表达式中插入一个普通的反斜杠: 在Java中“\\”表示为:我想要插入一个正则表达式反斜 ...
- 黑马程序员:Java基础总结----正则表达式
黑马程序员:Java基础总结 正则表达式 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 正则表达式 import java.util.regex.*; 符合一定规 ...
- java中使用正则表达式匹配字符串
在Java中使用正则表达式去匹配相应的字符串: String importFileRole = "(import)\\s*[a-zA-Z0-9_<>.]+\\;";// ...
随机推荐
- WebStorm常用配置
设置 快捷键设置 可以采用多种风格,这里采用Visual Studio风格,便于习惯使用其它IDE的用户迁移. JavaScript版本设置 JavaScript的主流版本已升至ESMAScript6 ...
- Microsoft Word 段前距设置和页眉设置
在毕设论文整理中,段前距的设置和页眉的设置不起作用,这着实让我脑袋疼.网上搜索了几种方式,搭配一下还是起了作用. 一. 段前距设置 1. 各级标题在首页,段前距设置不起作用. 选择要段前分页的段落,右 ...
- Leetcode 给一个数a和一个向量b,找出该向量b中的2个数相加等于a,并输出这两个数在向量中的位置
看C++primer Plus看的无聊,第一次做Leetcode的练习,本来想做二维向量的,结果始终通不过,查了原因,必须用一维的... 一维的答案: class Solution { public ...
- Visual Studio 下C#编译器在解析属性名时如果增加一个get_[您的另一个已经包含在类中属性名]的属性会报错,微软大哥这是什么鬼?
假设在在我们的vs环境新建一个类 copy以下代码,表面看好像一切都没有问题. using System; using System.Collections.Generic; using System ...
- 7月07日——[HouseStark] 团队简介
团队名称 HouseStark 团队口号 winter's coming,fire's on! full of passion,we are young! pick the code, with th ...
- Visual Studio 2015 Update 1 ISO
Visual Studio Community 2015 with UPDATE 1___________________________________________English ENU - h ...
- JCS缓存使用类
项目是一个门户网站,一些新闻等会做缓存. 导入jar包: 项目跟目录下配置文件:cache.ccf #内存缓存 jcs.default= jcs.default.cacheattributes=org ...
- SQLSERVER2008 不能用IP连接数据库问题
本机安装的数据库只能用电脑名+"\"+实例名来访问,用“.”.“(local)”.“localhost”呀都不能访问.然后在网上挖资料呀,挖呀挖呀,终于挖到了解决办法. 1.不能用 ...
- 深入理解JavaScript系列:为什么03-0.2不等于0.1
五一宅家看书,所以接着更新一篇文章. 今天讲一下为什么03-0.2不等于0.1这个问题. 有点标题党的味道,在JavaScript中,当你试着对小数进行加减运算时,有时候会发现某个结果并非我们所想的那 ...
- MAC按键以及快捷键
使用普通的非Mac自带的键盘的同志们,想要在Mini Mac上面想要使用键盘,则推荐使用Mac系统自带的虚拟键盘,这样就可以查看普通键盘上每个键对应的Mac系统上是什么. 查看Mac系统上的虚拟键盘的 ...