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