常见对象:正则表达式、Math类、System类、BigInteger、BigDecimal类、Date类、DateFormat类、Calendar类
正则表达式
概念:符合一定规则的字符串
是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
其实就是一个规则。有自己特殊的应用;
举例:校验QQ号的正确性;
java.util.regex.Pattern类
因此,典型的调用顺序是
Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches();
在仅使用一次正则表达式时,可以方便地通过此类定义 [matches
](../../../java/util/regex/Pattern.html#matches(java.lang.String, java.lang.CharSequence)) 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句
boolean b = Pattern.matches("a*b", "aaaaab");
等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。
常见组成规则(详见api)
- 字符
- 字符类
- 预定义字符类
- 边界匹配器
- 数量词
正则表达式的应用
判断功能
-
public boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式。
-
需求:
- 判断手机号码是否满足要求?
-
分析:
- 键盘录入手机号码
- 定义手机号码的规则
- 调用功能,判断即可
- 输出结果
分隔功能
public String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
举例:
替换功能
-
public String replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
获取功能
- Pattern类 和 Matcher类
一个案例,知识点融会贯通
Math类,数学计算
Math
类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
java.util.Random类
此类的实例用于生成伪随机数流。产生随机数的类
很多应用程序会发现 Math.random()
方法更易于使用。
Long.System 类
System
类包含一些有用的类字段和方法。它不能被实例化。 (方法都是静态的)
void gc():运行垃圾回收器
终止当前正在运行的java虚拟机;
返回以毫秒为单位的当前时间;
void arraycopy 方法示例:
java.math.BigInteger
BigInteger类:不可变的任意精度的整数。
不可变的任意精度的整数。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。
可以让超过Integer范围内的数据进行运算
构造方法:
BigIntegee(String str);
- 常用方法:加减乘除
BigDecimal类:不可变的、任意精度的有符号十进制数
- 由于float类型和double类型很容易丢失精度。所以,java提供了BigDecimal
- BigDecimal类概述
- 不可变的、任意精度的有符号十进制数;
- 可以解决,精度丢失问题;
构造方法:
- public BigDecimal(String val);
-
注意:建议使用String转换为BigDecimal;
- 先使用Double.toString(double)方法,然后使用BigDecimal(String)构造方法
BigDecimal类的加减乘除;
Date类 表示特定的瞬间,精确到毫秒。
注意:从 JDK 1.1 开始,
应该使用 `Calendar` 类实现日期和时间字段之间转换,
使用 `DateFormat` 类来格式化和解析日期字符串。`Date` 中的相应方法已废弃。
构造方法:
Date():根据当前的默认毫秒值创建日期对象;
Date(long date):根据给定的毫秒值创建日期对象
成员方法:
public long getTime():获取时间,以毫秒为单位
public void setTime(long time):设置时间
text.DateFormat 类是日期/时间格式化子类的抽象类
String和Date的相互转换:
DateFormat:可以进行日期和字符串的格式化和解析,但是由于是抽象类,所以使用具体子类SimpleDateFormat。
构造方法:
SimpleDateFormat(); 默认模式
- 用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
SimpleDateFormat(String pattern) ; 给定的模式
- 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
举例:
想要输出:2021年04月03日 12:45:00
模式:"yyyy年MM月dd日 HH:mm:ss"
Date --> String(格式化)
- String format(Date date)
将一个 Date 格式化为日期/时间字符串。
String --> Date(解析)
-
使用方法:public Date parse(String source) throws ParseException 从给定字符串的开始解析文本,以生成一个日期。该方法不使用给定字符串的整个文本。
注意:
在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配
举例:
String str = "2021-04-03 12:45:00"
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
Calender类 抽象类(日历类)
它为特定瞬间与一组诸如 `YEAR`、`MONTH`、`DAY_OF_MONTH`、`HOUR` 等 [`日历字段`](../../java/util/Calendar.html#fields)之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
Calendar
提供了一个类方法 getInstance
,以获得此类型的一个通用的对象。
Calendar
的 getInstance
方法返回一个 Calendar
对象,其日历字段已由当前日期和时间初始化:
Calendar rightNow = Calendar.getInstance();
get方法:返回给定日历字段的值
public int get(int field)
返回给定日历字段的值。日历类中的每个日历字段都是静态的成员变量,并且是int类型
add方法:
public abstract void add(int field,int amount)
根据给定的日历字段和对应的时间,来对当前的日历进行操作;
根据日历的规则,为给定的日历字段添加或减去指定的时间量。例如,要从当前日历时间减去 5 天,可以通过调用以下方法做到这一点:
add(Calendar.DAY_OF_MONTH, -5)。
三年前的今天:
set方法 设置当前日历的年月日
public final void set(int year,
int month,
int date)
设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。保留其他日历字段以前的值。如果不需要这样做,则先调用 clear()。
设置当前日历的年月日;
c.set(2018,08,08);