莫张周刘王 发表于 2024-8-25 19:25:40

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;
    }
}正则表达式

正则表达式是用于匹配字符串的一种工具。它可以用于验证输入的格式、提取字符串中的信息或替换字符串的内容。
正则表达式常用语法:

[*]字符类

[*]:匹配 a、b 或 c。
[*][^abc]:匹配除了 a、b 和 c 的任意字符。
[*]:匹配小写字母。
[*]:匹配大写字母。
[*]:匹配数字。

[*]预定义字符类

[*]\d:匹配数字(等同于 )。
[*]\D:匹配非数字字符。
[*]\w:匹配字母、数字或下划线(等同于 )。
[*]\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());
      }
    }
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: JavaSE基础知识分享(十五)