首页 > 编程语言 >JavaSE基础知识分享(十五)

JavaSE基础知识分享(十五)

时间:2024-08-25 20:38:02浏览次数:4  
标签:匹配 String Season description 基础知识 枚举 十五 JavaSE name

写在前面

今天继续讲Java中的枚举和正则表达式的的知识!这部分说完,JavaSE部分的知识就结束了!

枚举

概述

枚举类用于描述有限个对象的类。自 JDK 1.5 起引入了对枚举类型的原生支持,简化了枚举的定义和使用。下面是 JDK 1.5 之前和之后的枚举类定义方式的比较。

JDK 1.5 之前的写法

  1. 创建枚举类的属性(成员变量)
    必须作为私有常量存在。

  2. 将构造方法私有化
    确保类的对象是有限个的,防止外部创建新的实例。

  3. 提供公共的静态 final 方法
    让外界获取枚举类中的多个对象。

  4. 提供公共的获取属性的方法

  5. 重写 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 之后的写法

  1. 定义枚举对象
    在枚举类的开头定义所有的枚举常量。

  2. 创建枚举类的属性(成员变量)
    必须作为私有常量存在。

  3. 将构造方法私有化
    确保类的对象是有限个的。

  4. 提供公共的获取属性的方法

  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]:匹配 abc
    • [^abc]:匹配除了 abc 的任意字符。
    • [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());
        }
    }
}

标签:匹配,String,Season,description,基础知识,枚举,十五,JavaSE,name
From: https://www.cnblogs.com/cjybigdatablog/p/18379483

相关文章

  • 芯片、GPU、CPU、显卡、显存、x86、ARM、AMD等基础知识
    1.芯片芯片指的是半导体材料制成的集成电路,可以包含一个或多个电子元件、电路或系统。芯片可以是任何电子设备的组成部分,不仅限于CPU,还包括GPU、内存芯片、存储控制器、网络接口等。GPU和CPU是两种最常见的特定的芯片。它们分别针对图形处理和通用计算任务进行了优化。2.CPU......
  • opencv-python图像增强十五:高级滤镜实现
    文章目录前言二、鲜食滤镜三、巧克力滤镜三,冷艳滤镜:前言在之前两个滤镜文章中介绍了六种简单的滤镜实现,它们大多都是由一个单独函数实现的接下来介绍五种结合了之前图像增强文章提的的算法的复合滤镜。本案例中的算法来自于文章一,文章二,文章三,感兴趣的小伙伴可以看......
  • 十五张图带你快速入门 shardingsphere-proxy
    ApacheShardingSphere是一款分布式的数据库生态系统,它包含两大产品:ShardingSphere-ProxyShardingSphere-JDBC很多同学对于ShardingSphere-JDBC已经能非常熟悉的使用了,但关于网上关于ShardingSphere-Proxy5.5的使用教程却非常少。所以这篇文章,笔者尝试带大家快速入门......
  • 十五、OpenCVSharp实现相机标定
    文章目录简介一、相机模型1.针孔相机模型2.畸变模型(径向畸变、切向畸变)二、标定板的设计和使用1.常见的标定板类型(如棋盘格、圆形标定板)2.标定板图像的采集要求三、相机标定的步骤1.角点检测和提取2.求解相机内参和外参3.标定结果的评估和优......
  • 技术分享-商城篇-用户订单管理(十五)
    前言在前面的文章中,我们详细阐述了商品模块、购物模块、支付模块等B2B2C(Business-to-Business-to-Consumer)电商中核心基础模块,接下来我们来聊一下基础模块中最后一个环节订单模块,订单模块属于购物体系闭环内容,也是必不可少的基础模块,它承接着后续业务操作,如售后、发货、订......
  • 【网络安全】基础知识详解(非常详细)零基础入门到精通,收藏这一篇就够了
    一、什么是网络安全?百度上对“网络安全”是这么介绍的:“网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露、系统连续可靠正常地运行,网络服务不中断。”嗯…是不是感觉有点抽象。那么我们再换一种表述:网......
  • 「代码随想录算法训练营」第四十五天 | 图论 part3
    目录101.孤岛的总面积DFS思路BFS思路102.沉没孤岛103.水流问题104.建造最大岛屿101.孤岛的总面积题目链接:https://kamacoder.com/problempage.php?pid=1173文章讲解:https://programmercarl.com/kamacoder/0101.孤岛的总面积.html题目状态:看题解DFS思路思路:代码结构......
  • JavaSE基础知识分享(十四)
    写在前面今天继续讲Java中的类加载器和lambda表达式的知识!类加载器和反射类的加载当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化三步来实现对这个类进行初始化。加载将.class文件读入内存,并为之创建一个Class对象。任何类被使用时系......
  • JavaSE基础(12)——文件、递归、IO流
    1、IO流Input:输入,写数据,数据从磁盘加载到内存(程序)中。Output:输出,读数据,数据从内存(程序)存储到磁盘中。流:不管是读还是写,都要对数据进行传输,传输的方式就是流2、File类数据的读写离不开文件,File类是可以对文件和目录(文件夹)级别,而不是内容本身进行增删改查的类。File类的API......
  • 金融基础知识-投资相关业务基本概念
    1.金融及金融机构金融〔Finance〕货币资金的融通。我们通常说的都是广义的金融,是指有关货币、信用的所有经济关系和交易行为的总称。金融机构〔FinancialInstitutes〕专门从事货币、信用活动的中介组织。目前,我国金融机构按其地位和功能可分为三大类:中央银行,金融监管......