Java基础笔记(13)常用类和正则表达式

Java笔记(13)常用类及正则

1.正则表达式

在开发中我们经常会对一些数据进行一些校验和检查,而Java也为我们提供了这个基本功能,正则表达式;根据给定的规则来匹配给定的数据;

对于正则表达式的详细规则,我们可以查阅API的Pattern类;

我这里列举一些常用的正则规则:

匹配字符:
	x 字符x。举例:'a'表示字符a
	\\ 反斜线字符。
	\n 新行(换行)符 ('\u000A') 
	\r 回车符 ('\u000D')
匹配字符类:
	[abc] a、b 或 c(简单类) 
	[^abc] 任何字符,除了 a、b 或 c(否定) 
	[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围) 
	[0-9] 0到9的字符都包括
预定义字符类
	. 任何字符。我的就是.字符本身,怎么表示呢? \.
	\d 数字:[0-9]
	\w 单词字符:[a-zA-Z_0-9]
边界匹配器
	^ 行的开头 
	$ 行的结尾 
	\b 单词边界
Greedy 数量词 
	X? X,一次或一次也没有
	X* X,零次或多次
	X+ X,一次或多次
	X{n} X,恰好 n 次 
	X{n,} X,至少 n 次 
	X{n,m} X,至少 n 次,但是不超过 m 次 

正则表达式常用的类:
Pattern类,是正则表达式的编译表示形式;
指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。

因此,典型的调用顺序是
Pattern p = Pattern.compile(“a * b”); //传递一个正则规则,得到匹配器对象
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();
在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句 boolean b = Pattern.matches(“a*b”, “aaaaab”);
这里面比较常用的是Matcher类的find()方法和group()方法,一个是查找是否存在满足匹配规则的数据,一个是获取刚才匹配到的数据,两个需结合使用,先判断找不找的到再获取;

最常用的还是String类带的正则表达式方法:
判断功能,判断当前字符串是否匹配正则
String类的public boolean matches(String regex);//regex是正则表达式
分割功能,返回所有匹配正则的子字符串数组
String类的public String[] split(String regex);
替换功能,替换匹配正则的子字符串
String类的public String replaceAll(String regex,String replacement)

下面列举几个正则表达式案例:

//判断电话号码,第一位必须是1,第二位1-8但不包含1、2、6,剩下9位任意0-9数字
String regex = "[1][1-8&&[^126]](\\d{9})";
//替换字符串里的数字为*
String regex = "\\d";
//匹配满足3个单词组成的字串
String regex = "\\b\\d{3}\\b";
2.Math类

Math类时Java针对数学运算操作的类,提供了很多的常用数学功能方法;

常见方法如下(详细参考API):

取绝对值:static double abs(double a) 返回 double 值的绝对值。
求立方根:static double cbrt(double a) 返回 double 值的立方根。  
求最大值:static int max(int a, int b) 返回两个 int 值中较大的一个。 
求某数的幂次值:static double pow(double a, double b)  返回第一个参数的第二个参数次幂的值。 
随机数:static double random()  返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 
平方根:static double sqrt(double a)  返回正确舍入的 double 值的正平方根。 
四舍五入:static double ceil(double a) 返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。 
static double floor(double a) 返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。 
3.Random类

Random类是Java提供的用于产生一个伪随机数的类;

构造方法:
    Random() 默认种子,每次产生的随机数不同
    Random(long seed) 指定种子,每次种子相同,随机数就相同
不指定种子时,默认是当前系统时间的毫秒值;

主要成员方法:
    int nextInt() 返回int范围内的随机数
    int nextInt(int n) 返回[0,n)范围内的随机数

4.System类

System类提供了一些有用的字段和方法,它不能被实例化;

成员方法
    public static void gc():运行垃圾回收器,执行System.gc()前,系统会自动调用finalize()方法清除对象占有的资源,通过super.finalize()方式可以实现从下到上的finalize()方法的调用,即先释放自己的资源,再去释放父类的资源。 但是,不要在程序中频繁的调用垃圾回收,因为每一次执行垃圾回收,JVM都会强制启动垃圾回收器运行,这会耗费更多的系统资源,会与正常的Java程序运行争抢资源,只有在执行大量的对象的释放,才调用垃圾回收器最好。
    public static void exit(int status):终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。
    public static long currentTimeMillis():获取当前系统时间的毫秒值;
    public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):注意这个命名是不符合规范的。从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束,注意是替换而不是插入。

5.BigInteger类

是Java针对大整数的运算提供的一个类
构造方法: BigInteger(String s)

成员方法
A:加:BigInteger add(BigInteger val) 返回其值为 (this + val) 的 BigInteger。
B:减:BigInteger subtract(BigInteger val) 返回其值为 (this - val) 的 BigInteger。
C:乘: BigInteger multiply(BigInteger val) 返回其值为 (this * val) 的 BigInteger
D:除:BigInteger divide(BigInteger val) 返回其值为 (this / val) 的 BigInteger。
E:商和余数: BigInteger[] divideAndRemainder(BigInteger val) 返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger 的数组。

6.BigDecimal

浮点数据做运算,会丢失精度。所以,针对浮点数据的操作建议采用BigDecimal。(金融相关的项目)

构造方法: BigDecimal(String s)

成员方法:
A:加:BigDecimal add(BigDecimal value);
B:减:BigDecimal subtract(BigDecimal subtrahend)
C:乘:BigDecimal multiply(BigDecimal value);
D:除:BigDecimal divide(BigDecimal value);

7.Date/DateFormat类

Date类是日期类,可以精确到毫秒值,常用来获取当前系统时间;

构造方法:
第一个构造函数使用当前日期和时间来初始化对象。
Date( )
第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
Date(long millisec)

成员方法
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。getTime()
用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
setTime(long time)

DateFormat针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,所以使用其子类SimpleDateFormat
构造方法: SimpleDateFormat(String pattern)
给定模式:yyyy-MM-dd HH:mm:ss
其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。

日期和字符串的转换(DateFormat类下的方法)
a:Date – String
  String format(Date date) 将一个 Date 格式化为日期/时间字符串。
b:String – Date
  Date parse(String source) 从给定字符串的开始解析文本,以生成一个日期。

8.Calendar

日历类,封装了所有的日历字段值,通过统一的方法根据传入不同的日历字段可以获取值。

如何得到一个日历对象呢?
Calendar rightNow = Calendar.getInstance();
本质返回的是子类对象

成员方法
根据日历字段得到对应的值:int get(int field)
根据日历字段和一个正负数确定是添加还是减去对应日历字段的值:abstract void add(int field, int amount)
设置日历对象的年月日:void set(int year, int month, int date)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值