Java Generate UUID

2025 年 5 月 10 日 | 阅读 3 分钟

UUID 是计算机系统中广泛使用的 128 位长唯一标识符。它由用四个连字符分隔的十六进制数字组成。在本节中,我们将讨论 什么是 UUID 以及 如何在 Java 中随机生成 UUID(版本 4)

UUID

UUID 代表 Universally Unique IDentifier(通用唯一标识符)。UUID 由 Open Software Foundation (OSF) 标准化。它是 Distributive Computing Environment (DCE) 的一部分。UUID 是一个 36 个字符(128 位)长的唯一数字。它也称为 Globally Unique IDentifier (GUID)(全局唯一标识符)。

Java Generate UUID

UUID 的使用取决于具体情况、用例、复杂性和条件。UUID 的一些用途包括:

  • 它用于生成唯一的 URN(统一资源名称)。
  • 它还可用于生成事务 ID。
  • 广泛应用于加密应用程序。
  • 在 Web 应用程序中,可用于生成会话 ID。

UUID 类型

UUID 有四种类型:

  • 基于时间的 UUID(版本 1)
  • DCE 安全 UUID(版本 2)
  • 基于名称的 UUID(版本 3 和 5)
  • 随机生成的 UUID(版本 4)

UUID 变体

UUID 有许多变体,但 Leach-Salz 变体被广泛使用。变体 2,即 Leach-Salz 的布局如下:

MSBs(高位字节)包含以下无符号字段:

0xFFFFFFFF00000000 time_low(低位时间戳)

0x00000000FFFF0000 time_mid(中间时间戳)

0x000000000000F000 version(版本号)

0x0000000000000FFF time_hi(高位时间戳)

LSBs(低位字节)包含以下无符号字段:

0xC000000000000000 variant(变体)

0x3FFF000000000000 clock_seq(时钟序列)

0x0000FFFFFFFFFFFF node(节点)

变体字段包含一个标识 UUID 布局的值。上述布局仅对变体 2 有效。

Java UUID 类

为了生成 UUID,Java 编程语言提供了 UUID 类。该类属于 java.util 包。它扩展了 Object 类,并实现了 serializablecomparable<UUID> 接口。该类生成一个表示 128 位值的不可变 UUID。

Java UUID 类方法

方法描述
clockSequence()它返回与指定 UUID 关联的时钟序列值。
compareTo()该方法将 UUID 与指定的 UUID 进行比较。
equals()该方法将此对象与指定对象进行比较。
fromString()它从字符串表示形式生成 UUID。
getLeastSignificantBits()它返回此 UUID 的 128 位值的最低有效 64 位。
getMostSignificantBits()它返回此 UUID 的 128 位值中的最高有效 64 位。
hashCode()它返回此 UUID 的哈希码。
nameUUIDFromBytes()它根据指定的字节数组检索基于名称的 UUID(版本 3)。
node()它返回与指定 UUID 关联的节点值。
randomUUID()它返回一个随机生成的 UUID。
timestamp()它返回与指定 UUID 关联的时间戳值。
toString()它返回一个表示此 UUID 的 String 对象。
variant()它用于获取与指定 UUID 关联的变体。
version()我们可以获取与指定 UUID 关联的版本号。

生成 UUID

以下示例演示了如何生成随机 UUID。

UUIDExample.java

输出

2b733549-d2cc-40f0-b7f3-9bfa9f3c1b89

从 String 转换为 UUID

StringToUUIDExample.java

输出

Randomly Generated UUID: fe8a03d7-6495-4231-9843-8ee2f5282620
UUID as String: fe8a03d7-6495-4231-9843-8ee2f5282620
UUID from String: fe8a03d7-6495-4231-9843-8ee2f5282620
true