Java常用类库

一、StringBuffer类

当对字符串进行修改的时候,需要使用StringBuffer类。和String类不同的是,StringBuffer类的对象能够被多次的修改,并且不产生新的未使用对象。

在使用StringBuffer类时,每次都会对StringBuffer对象进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用StringButter。

1.StringBuffer的常用方法

序号方法定义类型描述
1public StringBuffer()构造StringBuffer的构造方法
2public StringBuffer append(char c)方法在StringBuffer中提供了大量的追加操作(与String中使用“+”类似),可以向StringBuffer中追加内容,此方法可以添加任何类型数据
3public StringBuffer append(String str)方法
4public StringBuffer append(StringButter sb)方法
5public int indexOf(String str)方法查找指定字符串是否存在
6public int indexOf(String str, int formIndex)方法从指定位置开始查找指定字符串是否存在
7public StringBuffer insert(int offset, String str)方法在指定位置处加上指定字符串
8public StringBuffer reverse方法将内容反转保存
9public StringBuffer replace(int start, int end, String str)方法指定内容替换
10public int length()方法求出内容长度
11public StringBuffer delete(int start, int end)方法删除指定范围的字符串
12public String substring(int start)方法字符串截取,指定开始点
13public String substring(int start, int end)方法截取指定范围的字符串
14public String toString()方法Object类继承的方法,用于将内容变为String类型

(1.)实例操作1-----字符串连接操作(append)

在程序中使用append()方法可以进行字符串连接,而且此方法返回了一个StringBuffer类的实例,这样就可以采用代码链的形式一直调用append()方法。

例:通过append()方法连接各种类型的数据

package charjava;

public class java25 {
    public static void main(String[] args) {
        StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
        buf.append("Hello"); // 向StringBuffer中添加内容
        buf.append("World").append("!!!"); // 可以连续调用append方法
        buf.append("\n"); // 添加一个转义字符表示换行
        buf.append("数字 =").append(1).append("\n"); // 可以添加数字
        buf.append("字符 =").append('C').append("\n"); // 可以添加字符
        buf.append("布尔 =").append(true); // 可以添加布尔类型
        System.out.println(buf); // 内容输出
    }
}

(2.)实例操作2-----在任意位置处为StringBuffer添加内容

可以直接使用Insert()方法,在指定的位置上为StringBuffer添加内容。

例:在任意位置处为StringBuffer添加内容

package charjava;

public class java26 {
    public static void main(String[] args) {
        StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
        buf.append("World"); // 向StringBuffer中添加内容
        buf.insert(0,"Hello"); // 在所有内容之前添加
        System.out.println(buf); // 将修改后的结果输出
        buf.insert(buf.length(),"MLDN ~"); // 在最后添加
        System.out.println(buf); // 将内容输出
    }
}

(3.)实例操作3-----字符串反转操作

在StringBuffer中专门提供了字符串反转的操作方法。字符串反转是指将一个是”Hello"的字符串转为“olleH"。

例:字符串反转操作

package charjava;

public class java28 {
    public static void main(String[] args) {
        StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
        buf.append("World!!"); // 向StringBuffer中添加内容
        buf.insert(0,"Hello"); // 在所有内容之前添加
        String str = buf.reverse().toString(); // 将内容反转后变为String类型
        System.out.println(str); // 将内容输出
    }
}

(4.)实例操作4-----替换指定范围的内容

在StringBuffer类中也存在replace()方法。使用此方法可以对指定范围内容进行替换。

例:替换指定范围的内容

package charjava;

public class java27 {
    public static void main(String[] args) {
        StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
        buf.append("Hello").append("World!!"); // 向StringBuffer中添加内容
        buf.replace(5,11,"LiXingHua"); // 将World替换为LiXingHua
        System.out.println("内容替换之后的结果:" + buf); // 删除替换之后的内容
    }
}

在String中如果要想进行替换,则使用的是replaceAll()方法,而在StringBuffer中使用的方法是replace()方法。

(5.)实例操作5-----字符串截取

例:截取指定范围的字符串内容

package charjava;

public class java29 {
    public static void main(String[] args) {
        StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
        buf.append("Hello").append("World!!"); // 向StringBuffer中添加内容
        buf.replace(6,11,"LiXingHua"); // 将World替换为LiXingHua
        String str = buf.substring(6, 15); // 指定截取范围,并把内容转换为String类型
        System.out.println("截取之后的内容:" + str); // 将截取后的结果进行输出
    }
}

(6.)实例操作6-----删除指定范围的字符串

因为StringBuffer本身的内容是可更改的,所有也可以通过delete()方法删除指定范围的内容。

例:从StringBuffer中删除指定范围的字符串

package charjava;

public class java30 {
    public static void main(String[] args) {
        StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
        buf.append("Hello").append("World!!"); // 向StringBuffer中添加内容
        buf.replace(6,11,"LiXingHua"); // 将World替换为LiXingHua
        String str = buf.delete(6, 15).toString(); // 指定截取范围,并把内容转换为String类型
        System.out.println("删除之后的内容:" + str); // 将截取后的结果进行输出
    }
}

(7.)实例操作7-----查找指定的内容是否存在

通过indexOf()方法可以查找指定的内容,如果查找到了,则返回内容的位置;如果没有查找到。

package charjava;

public class java31 {
    public static void main(String[] args) {
        StringBuffer buf = new StringBuffer(); // 声明StringBuffer对象
        buf.append("Hello").append("World!!"); // 向StringBuffer中添加内容
        if (buf.indexOf("Hello") == -1) { // 没有查找到,则返回-1
            System.out.println("没有查找到指定的内容"); 
        }else { // 不为-1表示查找内容
            System.out.println("可以查找到指定的内容");
        }
    }
}

(8.)String、StringBuffer、StringBuilder的区别

  1. String的内容一旦声明则不可改变,而SrtringBuffer与StringBuilder声明的内容可以改变。
  2. StringBuffer类中提供的方法都是同步方法,属于安全的线程操作,而StringBuilder类中的方法都属于异步方法,属于非线程安全的操作。

2.System类

System类是一些与系统相关的属性和方法的集合,而且在System类中所有的属性都是静态的,要想引用这些属性和方法,直接使用System类调用即可。

System类的常用方法

序号方法定义类型描述
1public static void exit(int status)普通系统退出,如果status为非0就表示退出
2public static void gc()普通运行垃圾手机机制,调用的是Runtime类中的gc()方法
3public static long currentTimeMillis()普通返回以毫秒为单位的当前时间
4public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length)普通数组复制操作
5public static Properties getProperties()普通取得当前的系统全部属性
6public static String getProperty(String key)普通根据键值取得属性的具体内容

例:计算一个程序的执行时间

package charjava;

public class java32 {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis(); // 取得开始计算之前的时间
        int sum = 0; // 声明变量存放累加后的结果
        for (int i = 0; i < 30000000; i++) { // 执行累加操作
            sum += i;
        }
        long endTime = System.currentTimeMillis();
        System.out.println("计算所花费的时间:" + (endTime - startTime) + "毫秒");
    }
}

例:列出指定属性

package charjava;

public class java33 {
    public static void main(String[] args) {
        System.out.println("系统版本为:" + System.getProperty("os.name") + System.getProperty("os.version") + System.getProperty("os.arch")); // 获取当前系统版本
        System.out.println("系统用户为:" + System.getProperty("user.name"));
        System.out.println("当前用户目录:" + System.getProperty("user.home"));
        System.out.println("当前用户工作目录:" + System.getProperty("user.dir"));
    }
}

3.日期操作类

再程序的开发中经常会遇到日期类型的操作。Java对于日期的操作也提供了良好的支持,主要使用java.util包中的Date、Calendar,以及java.text包中的SimpleDateFormat实现。

3.1Date类

Date类是一个相对较为简单的操作类,在使用中直接使用java.util.Date类的构造方法并进行输出就可以得到一个完整的日期,构造方法定义如下:

例:得到当前系统日期

package charjava;
import java.util.Date;
public class java34 {
    public static void main(String[] args) {
      Date date = new Date(); // 实例Date类对象
        System.out.println("当前日期为:" + date); // 输出日期
    }
}

在Date类的方法中,还提供有两个long与Date间的转换操作方法:

  1. 构造方法:public Date(long date)
  2. 将Date变为long:public long getTime()

例:Date与long间的转换

package charjava;
import java.util.Date;
public class java35 {
    public static void main(String[] args) throws Exception {
        long cur = System.currentTimeMillis(); // 取得当前的日期时间以long型返回
        Date date = new Date(cur); // 将long转换为Date
        System.out.println(date); // 输出对象信息
        System.out.println(date.getTime()); // 输出对象信息
    }
}

3.2Calendar类

Calendar类可以将取得的时间精确到毫秒。

calendar类中的常量

序号常量类型描述
1public static final int YEARint 取得年
2public static final int MONTHint取得月
3public static final DAY_OF_MONTHint取得日
4

public static final int HOUR_OF_MONTH

int取得小时,24小时制
5public static final int MINUTEint取得分
6public static final int SECONDint取得秒
7public static final int MILLISECONDint 取得毫秒

Calendar类中提供的方法

序号方法类型描述
1public static Calendar getInstance()普通根据默认的时区实例化对象
2public boolean after(Object when)普通判断一个日期是否在指定日期之后
3public boolean before(Object when)普通判断一个日期是否在指定日期之前
4public int get(int field)普通返回给定日历字段的值

 例:取得系统的当前日期

package charjava;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class java36 {
    public static void main(String[] args) {
        Calendar calendar = new GregorianCalendar(); // 声明一个Calendar对象,通过子类为其实例化
        System.out.println("年:" + calendar.get(Calendar.YEAR)); // 年
        System.out.println("月:" + calendar.get(Calendar.MONTH) + 1); // 月
        System.out.println("日:" + calendar.get(Calendar.DAY_OF_MONTH)); // 日
        System.out.println("时:" + calendar.get(Calendar.HOUR_OF_DAY));  // 时
        System.out.println("分:" + calendar.get(Calendar.MINUTE)); // 分
        System.out.println("秒:" + calendar.get(Calendar.SECOND)); // 秒
        System.out.println("毫秒:" + calendar.get(Calendar.MILLISECOND)); // 毫秒
    }
}

3.3DateFormat类

DateFormat类与MessageFormat类都属于Format类的子类,专门用于格式化数据使用。

DateFormat类的常用方法

序号方法类型描述
1public static final DateFormat getDateInstance()普通得到默认的对象
2public static final DateFormat getDateInstance(int style, Locale aLocale)普通根据Locale得到对象
3public static final DateFormat getDateTimeInsetance()普通得到日期和时间对象
4public static final DateFormat getDateTimeInstance(int dataStyle,int timeStyle,Locale aLocale)普通根据Locale得到日期和时间对象

例:观察DateFormat中的默认操作

package charjava;
import java.text.DateFormat;
import java.util.Date;

public class java37 {
    public static void main(String[] args) {
        DateFormat df1 = DateFormat.getDateInstance(); // 声明DateFormat类对象,取得日期
        DateFormat df2 = DateFormat.getDateTimeInstance(); // 声明DateFormat类对象,取得日期时间
        System.out.println("DATE:" + df1.format(new Date())); // 格式化日期
        System.out.println("DATETIME:" + df2.format(new Date()));
    }
}

例:指定显示的风格

package charjava;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

public class java38 {
    public static void main(String[] args) {
        DateFormat df1 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD, new Locale("zh", "CN")); // 声明DateFormat对象,取得日期,并设置日期显示风格
        DateFormat df2 = DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD, DateFormat.ERA_FIELD, new Locale("zh", "CN")); // 声明DateFormat对象,取得日期和时间,设置日期和时间的显示格式
        System.out.println("DATE:" + df1.format(new Date()));
        System.out.println("DATETIME:" + df2.format(new Date()));
    }
}

3.4SimpleDateFormat类

将一种日期格式转换为另外一种日期格式。

日期格式化模板标记

序号标记描述
1y年,年份是4位数字,所以需要使用“yyyy”表示
2M年中的月份,月份是两个数字,所以需要使用“MM”表示
3d月中的天数,天数是两位数字,所以需要使用“dd”表示
4H一天中的小时数(24小时),小时是两位数字,使用“HH”表示
5m小时中的分钟数,分钟是两位数字,使用“mm”表示
6s分钟中的秒数,秒是两位数字,使用“ss”表示
7S毫秒数,毫秒数字是3位数字,使用“SSS”表示

例:格式化日期操作

package charjava;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class java39 {
    public static void main(String[] args) {
        String strDate = "2017-03-15 10:11:30.345"; // 定义日期和时间的字符串
        String pat1 = "yyyy-MM-dd HH:mm:ss.SSS"; // 准备第一个模板,从字符串提取日期数字
        String pat2 = "yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒 SSS 毫秒"; // 准备第二个模板,将提取后的日期数字变为指定的格式
        SimpleDateFormat sdf1 = new SimpleDateFormat(pat1); // 实例化模板对象
        SimpleDateFormat sdf2 = new SimpleDateFormat(pat2); // 实例化模板对象
        Date d = null;
        try {
            d = sdf1.parse(strDate); // 将给定字符串中的日期提取出来
        }catch (ParseException e) { // 如果提供的字符串格式有错误,则进行异常处理
            e.printStackTrace();
        }
        System.out.println(sdf2.format(d)); // 将日期转换为新的格式
    }
}

3.5Math类

Math类是数学操作类,提供了一系列的数学操作方法,包括求绝对值,三角函数等。Math类中提供的一切方法都是静态方法,所以直接由类名称调用。

例:Math类的基本操作

package charjava;

public class java40 {
    public static void main(String[] args) {
        System.out.println("求平方根:" + Math.sqrt(9.0)); // Math类中的方法都是静态方法,直接使用“类名称.方法名称()”的形式调用
        System.out.println("求两数的最大值:" + Math.max(10, 30));
        System.out.println("求两数的最小值:" + Math.min(10, 30));
        System.out.println("2的3次方:" + Math.pow(2, 3));
        System.out.println("四舍五入:" + Math.round(33.6));
    }
}

注意:Math类中round()方法主要作用就是实现四舍五入。

例:观察四舍五入

package charjava;

public class java41 {
    public static void main(String[] args) {
        System.out.println(Math.round(15.5)); // 16
        System.out.println(Math.round(-15.5)); // -15
        System.out.println(Math.round(-15.51)); // -16
    }
}

注意:当四舍五入的数据为负数时,操作数据小数位大于0.5才进位,小于或等于0.5则不进位。

3.6Random类

Random是随时数产生类,可以指定一个随机数的范围,然后可以任意产生在此范围中的数字。

Random类中的常用方法

序号方法类型描述
1public boolean nextBoolean()普通随机生成boolean值
2public double nextDouble()普通随机生成Double值
3public float nextFloat()普通随机生成folat值
4public int nextInt()普通随机生成int值
5public int nextInt(int n)普通随机生成给定最大值的int值
6public long nextLong()普通随机生成long值

例:生成10个随机数字,且数字不大于100

package charjava;
import java.util.Random;

public class java42 {
    public static void main(String[] args) {
        Random r = new Random(); // 定义Random对象
        for (int i = 0; i < 10; i++) { // 输出10个随机数
            System.out.println(r.nextInt(100) + "\t");
        }
    }
}

 3.7NumberFormat类

NumberFormat表示数字的格式化类。

NumberFormat类的常用方法

序号方法类型描述
1public static Locale[] getAvailableLocales()普通返回所有语言环境的数组
2public static final NumberFormat getIntstance()普通返回当前默认语言环境的数字格式
3public static NumberFormat getIntstance(Locale inLocale)普通返回指定语言环境的数字格式
4public static fianl NumberFormat getCurrencyInstance()普通返回当前默认环境的货币格式
5public static NumberFormat getCurrencyInstance(Locale inLocale)普通返回指定语言环境的数字格式

NumberFormat类的常用方法

例:使用当前语言环境格式化数字

package charjava;
import java.text.NumberFormat;
public class java44 {
    public static void main(String[] args) {
        NumberFormat nf = NumberFormat.getInstance(); // 得到默认的数字格式显示
        System.out.println("格式化之后的数字:" + nf.format(1000000));
        System.out.println("格式化之后的数字:" + nf.format(1000.345));
    }
}

3.8DecimalFormat类

DecimalFormat也是Format的一个子类,主要作用是格式化数字。

DecimalFormalFormat格式化模板

 

序号标记位置描述
10数字代表阿拉伯数字,每一个0表示一位阿拉伯数字,如果该位不存在则显示0
2#数字代表阿拉伯数字,每一个#表示一位阿拉伯数字1,如果该位不存在则不显示
3.数字小数点分隔符或货币的小数分隔符
4-数字代表负号
5,数字分组分隔符
6E数字分隔科学计数法中的尾数和指数
7子模式边界分隔科学计数法中的尾数和指数
8%前缀或后缀乘以100并显示位百位数
9\u2030前缀或后缀乘以100并显示为百分数
10\u00A4前缀或后缀货币记号,由货币替换,如果两个同时出现,则用国际货币符号替换,如果出现在某个模式中,则使用货币小数分隔符,而不使用小数分隔符
11前缀或后缀用于在前缀或后缀中为特殊字符加引号

例:格式化数字

package charjava;
import java.text.DecimalFormat;

class FormatDemo {
    public void format1(String pattern, double value) {
    DecimalFormat df = new DecimalFormat(pattern); // 声明一个DecimalFormat对象
    String str = df.format(value); // 实例化对象
        System.out.println("使用"+ pattern + "格式化数字" + value + ": " + str); // 格式化数字
    }
}
public class java45 {
    public static void main(String[] args) {
      FormatDemo demo = new FormatDemo();
      demo.format1("###,###.###", 111222.34567);
      demo.format1("000,000.000", 11222.34567);
      demo.format1("###,###.###¥", 111222.34567);
      demo.format1("000,000.000¥", 111222.34567);
      demo.format1("##.###%", 0.345678); // 使用百分数形式
      demo.format1("00.###%", 0.0345678); // 使用百分数形式
      demo.format1("###.###\u2030", 0.345678); // 使用千分数形式
    }
}

3.9BigInteger类

BigInteger表示是大整数类,定义在Java.math包中,在BigInteger类中封装了各个常用的基本运算。

BigInteger类的常用方法

序号方法类型描述
1public BigInteger(String val)构造将一个字符串变为BigInteger类型的数据
2public BigInteger add(BigInteger val)普通加法
3public BigInteger subtract(BigInteger val)普通减法
4public BigInteger multiply(BigInteger val)普通乘法
5public BigInteger divide(BigInteger val)普通除法
6public BigInteger max(BigInteger val)普通返回两个大数字中的最大值
7public BigInteger min(BigInteger val)普通返回两个大数字的最小值
8public BigInteger[] divideAndRemainder(BigInteger val)普通除法操作,数组的第1个元素为除法的商,第2个元素为除法的余数

例:验证BigInteger

package charjava;

import java.math.BigInteger;

public class java46 {
    public static void main(String[] args) {
        BigInteger big1 = new BigInteger("9"); // 定义BigInteger对象
        BigInteger big2 = new BigInteger("11"); // 定义BigInteger对象
        System.out.println("加法操作:" + big2.add(big1)); // 加法操作
        System.out.println("减法操作:" + big2.subtract(big1)); // 减法操作
        System.out.println("乘法操作:" + big2.multiply(big1)); // 乘法操作
        System.out.println("除法操作:" + big2.divide(big1)); // 除法操作
        System.out.println("最大数:" + big2.max(big1)); // 求出最大值
        System.out.println("最小数:" + big2.min(big1)); // 求出最小值
        BigInteger[] result = big2.divideAndRemainder(big1); // 除法操作
        System.out.println("商是:" + result[0] + ";余数是:" + result[1]);
    }
}

3.10BigDecimal类

BigInteger类用于数字精确计算。

BigDecimal的常用方法

序号方法类型描述
1public BigDecimal(double val)构造将double表示形式转换为BigDecimal
2public BigDecimal(int val)构造将int表示形式转换为BigDecimal
3public BigDecimal(String val)构造将字符串表示形式转换为BigDecimal
4public BigDecimal add(BigDecimal augend)普通加法
5public BigDecimal subtract(BigDecimal subtrahend)普通减法
6public BigDecimal multiply(BigDecimal multiplicand)普通乘法
7public BigDecimal divide(BigDecimal divisor)普通除法

例:进行四舍五入的四则运算

package charjava;
import java.math.BigDecimal;
import java.math.RoundingMode;

class MyMath {
    public static double add(double one, double two) { // 进行加法运算
        BigDecimal big1 = new BigDecimal(one);
        BigDecimal big2 = new BigDecimal(two);
        return big1.add(big2).doubleValue();
    }
    public static double sub(double one, double two) { // 进行减法运算
        BigDecimal big1 = new BigDecimal(one);
        BigDecimal big2 = new BigDecimal(two);
        return big1.subtract(big2).doubleValue();
    }
    public static double mul(double one, double two) { // 进行乘法运算
        BigDecimal big1 = new BigDecimal(one);
        BigDecimal big2 = new BigDecimal(two);
        return big1.multiply(big2).doubleValue();
    }
    public static double div(double one, double two, int len) { // 进行除法运算
        BigDecimal big1 = new BigDecimal(one);
        BigDecimal big2 = new BigDecimal(two);
        return big1.divide(big2, len, RoundingMode.HALF_UP).doubleValue();
}
    public static double round(double d, int len) { // 进行四舍五入操作
    BigDecimal big1 = new BigDecimal(d);
    BigDecimal big2 = new BigDecimal(1);
    return big1.divide(big2, len, RoundingMode.HALF_UP).doubleValue();
    }
}
public class java47 {
    public static void main(String[] args) {
        System.out.println("加法运算:" + MyMath.round(MyMath.add(10.345, 3.333),2));
        System.out.println("乘法运算:" + MyMath.round(MyMath.mul(10.345, 3.333), 2));
        System.out.println("除法运算:" + MyMath.div(10.345, 3.333, 2));
        System.out.println("减法运算:" + MyMath.round(MyMath.sub(10.345, 3.333), 2));
    }
}

3.11Arrays类

Arrays类是数组的操作类,主要功能是实现数组元素的查找,数组内容的填充、排序等。

Arrays类的常用方法

序号方法类型描述
1public static boolean equals(int[] a, int[] a2)普通判断两个数组是否相等,此方法被重载多次,可以判断各种数据类型的数组
2public static void fill(int[] a, int val)普通将指定内容填充到数组之中,此方法被重载多次,可以填充各种数据类型的数组
3public static void sort(int[] a)普通数组排序,此方法被重载多次,可以对各种类型的数组进行排序
4public static int binaryScearch(int[] a, int key)普通对排序后的数组进行检索,此方法被重载多次,可以各种类型的数组进行搜索
5public static String toString(int[] a)普通输出数组信息,此方法被重载多次,可以输出各种数据类型的数组

例:操作Arrays类

package charjava;
import java.util.*;

public class java48 {
    public static void main(String[] args) {
        int[] temp = {3, 14, 25, 77, 27, 118, 9, 11}; // 声明一个整型数组
        Arrays.sort(temp); // 数组排序
        System.out.println("排序后的数组"); 
        System.out.println(Arrays.toString(temp)); // 以字符串输出数组
        int point = Arrays.binarySearch(temp, 25); // 检索数据位置
        System.out.println("元素'25'的位置在:" + point);
        Arrays.fill(temp, 25); // 填充数组
        System.out.println("数组填充:");
        System.out.println(Arrays.toString(temp)); // 以字符串输出数组
    }
}

3.12正则表达式

(1.)认识正则表达式

正则表达式可以方便对数据进行匹配,可以执行更加复杂的字符串验证、拆分、替换功能。正则表达式可以用来搜索、编辑或处理文本。

例:使用正则表达式验证

package charjava;
import java.util.regex.Pattern;

public class java49 {
    public static void main(String[] args) {
        String str = "1234567890"; // 此字符串由数字组成
        if (Pattern.compile("[0-9]").matcher(str).matches()) { // 使用正则表达式验证
            System.out.println("是由数字组成!");
        }
        else {
            System.out.println("不是由数字组成!");
        }
    }
}

(2.)Pattern类和Mactcher类

  • Pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态编译方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数。
  • Mactcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象。

常用正则规范

序号规范描述序号规范描述
1\\表示反斜线(\)字符9\w表示字母、数字、下划线
2\t表示制表符10\W表示非字母、数字、下划线
3\n表示换行11\s表示所有空白字符(换行、空格等)
4[abc]字符a、b、c之外的任意字符12\S表示所有非空白字符
5[^abc]除了a、b、c之外任意字符13^行的开头
6[a-zA-Z0-9]表示由字母、数字组成14$行的结尾
7\d表示数字15.匹配除换行符之外的任意字符
8\D表示非数字

数量表示(X表示一组规范)

序号规范描述序号规范描述
1X必须出现一次5X{n}必须出现n次
2X?可以出现0次或1次6X{n,}必须出现n次以上
3X*可以出现0次、1次或多次7X{n,m}必须出现n~m次
4X+可以出现1次或多次

逻辑运算符(X、Y表示一组规范)

序号规范描述序号规范描述
1XYX规范后跟着Y规范3(X)作为一个捕获组规范
2X|YX规范或Y规范

Pattern类的常用方法

序号方法类型描述
1public static Pattern compile(String regex)普通指定正则表达式规范
2public Matcher matcher(CharSequence input)普通返回Matcher类实例
3public String[] split(CharSequence input)普通字符串拆分

Matcher类的常用方法

序号方法类型描述
1public boolean mathces()普通执行验证
2public String replaceAll(String replacement)普通字符串替换 

例:验证一个字符串是否是合法的日期格式

package charjava;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class java50 {
    public static void main(String[] args) {
        String str = "1983-07-27";
        String pat = "\\d{4}-\\d{2}-\\d{2}"; // 定义验证规则
        Pattern p = Pattern.compile(pat); // 实例化Pattern类
        Matcher m = p.matcher(str); // 验证字符串内容是否合法
        if (m.matches()) { // 使用正则验证
            System.out.println("日期格式合法!");
        }
        else {
            System.out.println("日期格式不合法!!");
        }
    }
}

例:按照字符串的数字将字符串拆分

package charjava;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class java52 {
    public static void main(String[] args) {
        String str = "A1B22C333D4444E55555F";
        String pat = "\\d+"; // 定义验证规则
        Pattern p = Pattern.compile(pat); // 实例化Pattern类
        String s[] = p.split(str); // 进行字符串拆分
        for (int x = 0; x<s.length; x++) {
            System.out.println(s[x] + "\t"); // 输出
        }
    }
}

 例:将全部数字替换成"_"

package charjava;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class java51 {
    public static void main(String[] args) {
        String str = "A1B22C333D4444E55555F";
        String pat = "\\d+"; // 定义验证规则
        Pattern p = Pattern.compile(pat); // 实例化Pattern类
        Matcher m = p.matcher(str); // 实例化Matcher类
        String newString = m.replaceAll("_"); // 替换数字
        System.out.println(newString);
    }
}

3.13String类对正则表达式的支持

String类的正则支持

序号方法类型描述
1public boolean matches(String regex)普通字符串匹配
2Public String replaceAll(String regex,String replacement)普通字符串替换
3public String[] split(String regex)普通字符串拆分

例:使用String类修改之前的操作

package charjava;

public class java53 {
    public static void main(String[] args) {
        String str1 = "A1B22C333D4444E55555F".replaceAll("\\d+", "_");
        boolean temp = "1983-07-27".matches("\\d{4}-\\d{2}-\\d{2}");
        String s[] = "A1B22C333D4444E55555F".split("\\d+");
        System.out.println("字符串替换操作:" + str1);
        System.out.println("字符串替换验证:" + temp);
        System.out.println("字符串拆分:" );
        for (int x = 0; x < s.length; x++) {
            System.out.println(s[x] + '\t');
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值