Java - 枚举、JDK8新特性、正则表达式
一、枚举
-
概述
public class Test { public static void main(String[] args) { Light light = Light.YELLOW; switch (light) { case RED: System.out.println("红灯亮了,停止前行"); break; case YELLOW: System.out.println("黄灯亮了,等一等"); break; case GREEN: System.out.println("绿灯亮了,快速通过"); break; default: System.out.println("您提供的操作有误"); } } } enum Light { RED, YELLOW, GREEN }
-
枚举的本质
public static final GenderClass BOY = new GenderClass(18); public static final GenderClass GIRL = new GenderClass(20);
-
枚举实现单例
//枚举类 public enum SingletonDemo { ONE; } //枚举实现单例 public class Test { public static void main(String[] args) { SingletonDemo one1 = SingletonDemo.ONE; SingletonDemo one2 = SingletonDemo.ONE; System.out.println(one1==one2); } }
-
枚举编译后也会产生 .class 文件,对其反编译后可以看到枚举的本质
二、JDK8新特性
-
方法引用
- 简介
-
方法引用:必须要有lambda表达式已经完成同样的操作,才能使用方法引用
-
简单使用
public static void main(String[] args) { //Runnable r = () -> { // System.out.println("Runnable"); //}; Runnable r = Test::show; new Thread(r).start(); } public static void show() { System.out.println("Runnable"); }
-
Base64编解码
-
概述
-
~ 编解码:客户端1想给客户端2发送文字,客户端1的文字是先到服务器的,服务器再发给客户端2;那么如果服务器的编码和客户端1的编码不同,服务器就会把文字解码成错误的内容,此时再发给客户端2,客户端2其实就看不懂了,文字传输就出现了问题。那么为了解决这个问题,服务器会先把客户端1发来的文字编码成一些由基本字符组成的内容,这样就不容易产生乱码;其实也起到了一点加密的作用,但是跟加密还是两回事。
- A给B发消息,A的消息是A自己编码后发到服务端,然后服务端解码后,会对信息进行审核,通过后再编码发给B,B自己解码
-
常用方法
-
base编解码
private static void method1() { byte[] bytes = "黑马程序员".getBytes(); //编码 Base64.Encoder encoder = Base64.getEncoder(); String result = encoder.encodeToString(bytes); System.out.println("编码后:" + result); //解码 String str = "6buR6ams56iL5bqP5ZGY"; Base64.Decoder decoder = Base64.getDecoder(); byte[] bytes2 = decoder.decode("6buR6ams56iL5bqP5ZGY"); String result2 = new String(bytes2); System.out.println("解码后:" + result2); }
-
三、正则表达式
-
概述
-
正则语法
//1.需求:按照如下要求,使用正则表达式,完成"DG8FV-B9TKY-FRT9J-99899-XPQ4G"序列号字符串内容的验证。
String regex = "([0-9A-Z]{5}-){4}[0-9A-Z]{5}";
System.out.println("DG8FV-B9TKY-FRT9J-99899-XPQ4G".matches(regex));//true
System.out.println("--------");
//2. 验证小数:要求匹配:3、3.0、3.14、+3.14、-3.0
// +-出现0次货1次 3出现1次 .和后面的数字,要么出现1次,要么都没有
String regex2 = "[+-]?3(\\.\\d+)?";
System.out.println("3".matches(regex2));//true
System.out.println("3.0".matches(regex2));//true
System.out.println("3.14".matches(regex2));//true
System.out.println("+3.14".matches(regex2));//true
System.out.println("-3.0".matches(regex2));//true
System.out.println("3.".matches(regex2));//false
-
正则应用
-
字符串.trim() 清空字符串前后的空格