JDK基础类库java.util包下那些你可能不知道的工具们大盘点(一)EnumMap、EnumSet【享学Java】(下)

简介: JDK基础类库java.util包下那些你可能不知道的工具们大盘点(一)EnumMap、EnumSet【享学Java】(下)

UUID和Base64


UUID


UUID (Universally Unique Identifier)缩写,即通用唯一识别码,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。


JDK5提供了UUID这个工具类,我们经常这么使用它:


public class Main {
    public static void main(String[] args){
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        System.out.println(uuid);
    }
}

Base64


在过去的很多年中,JDK都只有一个未公开的类(BASE64Encoder)。在Java 8中,Base64编码已经成为Java类库的标准内置了 Base64 编码的编码器和解码器


public class Main {
    public static void main(String[] args) throws UnsupportedEncodingException {
        // 编码
        String base64encodedString = Base64.getEncoder().encodeToString("runoob?java8".getBytes("utf-8"));
        System.out.println("Base64 编码字符串 (基本) :" + base64encodedString);
        // 解码
        byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
        System.out.println("原始字符串: " + new String(base64decodedBytes, "utf-8")); //  runoob?java8  还原出来了
        System.out.println("-------------------------------");
        base64encodedString = Base64.getUrlEncoder().encodeToString("TutorialsPoint?java8".getBytes("utf-8"));
        System.out.println("Base64 编码字符串 (URL) :" + base64encodedString);
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < 10; ++i) {
            stringBuilder.append(UUID.randomUUID().toString());
        }
        byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8");
        String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes);
        System.out.println("Base64 编码字符串 (MIME) :" + mimeEncodedString);
    }
}

Random和ThreadLocalRandom


参考:【小家java】Java中Random ThreadLocalRandom 设置随机种子获取随机数精讲


OptionalInt和OptionalLong和OptionalDouble


一看就能明白,这三个Optional都特别的相似,只是把Optional的泛型换成了具体类型而已。也一样都位于java.util包内~


以OptionalInt为例写个Demo:


public class Main {
    public static void main(String[] args) {
        //静态工厂方法获取一个示例
        OptionalInt op = OptionalInt.of(1);
        if (op.isPresent()) {
            //获得OptionalInt对象里面的值,输出1
            System.out.println(op.getAsInt());
        }
        op.ifPresent((value) -> System.out.println("value:" + value));
        //创建一个空值对象 ==========
        OptionalInt opint = OptionalInt.empty();
        if (opint.isPresent()) {
            //和Optional一样,输出No value present
            System.out.println(opint.getAsInt());
        } else {
            //如果没有值,赋初始值  这里,现在这里只能写int值
            System.out.println(opint.orElse(222));
            //如果没有值,赋初始函数
            System.out.println(opint.orElseGet(() -> 333));
        }
        //如果【没有值】则抛出异常
        opint.orElseThrow(NullPointerException::new);
    }
}


输出:


1
value:1
222
333
Exception in thread "main" java.lang.NullPointerException
  at java.util.OptionalInt.orElseThrow(OptionalInt.java:189)
  at com.fsx.maintest.Main.main(Main.java:35)


需要注意的一点是:上面这3个类并不支持ofNullable(),filter(),map(),flatMap()等这几个Optional里有的方法。


总结


其实也没什么好总结,主要说一点吧:主动性的培养技术敏感度,处处留心皆学问。


The last:如果觉得本文对你有帮助,不妨点个赞呗。当然分享到你的朋友圈让更多小伙伴看到也是被作者本人许可的~

相关文章
|
1月前
|
Java
java中日期处理的一些工具方法
java中日期处理的一些工具方法
17 1
|
1月前
|
安全 Java 数据安全/隐私保护
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用
|
1月前
|
安全 Java 数据安全/隐私保护
探讨 Java 代码混淆加固工具
探讨 Java 代码混淆加固工具
|
1月前
|
SQL Java Apache
Java类库
Java类库
15 0
|
1月前
|
存储 安全 Java
基于Java的qq截图工具(毕业设计含源码)
基于Java的qq截图工具(毕业设计含源码)
29 0
|
1月前
|
监控 NoSQL Java
性能工具之 Java 调试工具 JDB
【2月更文挑战第25天】性能工具之 Java 调试工具 JDB
43 4
|
1月前
|
Cloud Native Java 开发者
Spring Boot 4.0:构建云原生Java应用的前沿工具
Spring Boot 4.0:构建云原生Java应用的前沿工具
|
2月前
|
人工智能 文字识别 Java
AI工具【OCR 01】Java可使用的OCR工具Tess4J使用举例(身份证信息识别核心代码及信息提取方法分享)
【2月更文挑战第1天】Lept4J和Tess4J都是基于Tesseract OCR引擎的Java接口,可以用来识别图像中的文本,本次介绍Tess4J
95 0
|
2月前
|
Java iOS开发 MacOS
使用JDK自带的keytool工具生成签名文件
使用JDK自带的keytool工具生成签名文件
15 0