寫在前面
今天繼續講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());
}
}
}