JavaSE基础知识分享(十五)
写在前面
今天继续讲Java中的枚举和正则表达式的的知识!这部分说完,JavaSE部分的知识就结束了!
枚举
概述
枚举类用于描述有限个对象的类。自 JDK 1.5 起引入了对枚举类型的原生支持,简化了枚举的定义和使用。下面是 JDK 1.5 之前和之后的枚举类定义方式的比较。
JDK 1.5 之前的写法
-
创建枚举类的属性(成员变量)
必须作为私有常量存在。 -
将构造方法私有化
确保类的对象是有限个的,防止外部创建新的实例。 -
提供公共的静态
final
方法
让外界获取枚举类中的多个对象。 -
提供公共的获取属性的方法
-
重写
toString()
方法
提供一个有意义的字符串表示。
示例代码:
public class Season {
// 枚举对象
private static final Season SPRING = new Season("春天", "春暖花开");
private static final Season SUMMER = new Season("夏天", "烈日炎炎");
private static final Season AUTUMN = new Season("秋天", "秋高气爽");
private static final Season WINTER = new Season("冬天", "寒风刺骨");
// 枚举类的属性
private final String name;
private final String description;
// 私有构造方法
private Season(String name, String description) {
this.name = name;
this.description = description;
}
// 获取属性的方法
public String getName() {
return name;
}
public String getDescription() {
return description;
}
// 重写 toString() 方法
@Override
public String toString() {
return name + ": " + description;
}
// 提供公共的静态方法获取枚举对象
public static Season[] values() {
return new Season[] { SPRING, SUMMER, AUTUMN, WINTER };
}
}
JDK 1.5 之后的写法
-
定义枚举对象
在枚举类的开头定义所有的枚举常量。 -
创建枚举类的属性(成员变量)
必须作为私有常量存在。 -
将构造方法私有化
确保类的对象是有限个的。 -
提供公共的获取属性的方法
-
重写
toString()
方法
提供有意义的字符串表示。
示例代码:
public enum Season {
SPRING("春天", "春暖花开"),
SUMMER("夏天", "烈日炎炎"),
AUTUMN("秋天", "秋高气爽"),
WINTER("冬天", "寒风刺骨");
// 枚举类的属性
private final String name;
private final String description;
// 构造方法私有化
private Season(String name, String description) {
this.name = name;
this.description = description;
}
// 获取属性的方法
public String getName() {
return name;
}
public String getDescription() {
return description;
}
// 重写 toString() 方法
@Override
public String toString() {
return name + ": " + description;
}
}
正则表达式
正则表达式是用于匹配字符串的一种工具。它可以用于验证输入的格式、提取字符串中的信息或替换字符串的内容。
正则表达式常用语法:
-
字符类
[abc]
:匹配a
、b
或c
。[^abc]
:匹配除了a
、b
和c
的任意字符。[a-z]
:匹配小写字母。[A-Z]
:匹配大写字母。[0-9]
:匹配数字。
-
预定义字符类
\d
:匹配数字(等同于[0-9]
)。\D
:匹配非数字字符。\w
:匹配字母、数字或下划线(等同于[a-zA-Z0-9_]
)。\W
:匹配非字母、数字和下划线字符。\s
:匹配空白字符(包括空格、制表符、换行符等)。\S
:匹配非空白字符。
-
量词
*
:匹配前面的字符零次或多次。+
:匹配前面的字符一次或多次。?
:匹配前面的字符零次或一次。{n}
:匹配前面的字符正好 n 次。{n,}
:匹配前面的字符至少 n 次。{n,m}
:匹配前面的字符至少 n 次,但不超过 m 次。
-
边界匹配
^
:匹配字符串的开头。$
:匹配字符串的结尾。
-
分组和捕获
()
:将匹配的部分分组。|
:表示逻辑“或”操作符。
-
转义字符
\
:用于转义特殊字符,如\.
、\*
、\?
等。
示例:
// Java 中使用正则表达式进行匹配
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegexExample {
public static void main(String[] args) {
String regex = "\\d+"; // 匹配一个或多个数字
String input = "There are 123 apples and 456 oranges.";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println("Found number: " + matcher.group());
}
}
}