java.util.UUID.randomUUID()。toString()长度


问题内容

java.util.UUID.randomUUID()。toString()的长度是否始终等于36?

我找不到有关的信息。这里只说以下几点:

公共静态UUID
randomUUID()静态工厂,用于检索类型4(伪随机生成的)UUID。使用加密强度高的伪随机数生成器生成UUID。返回:随机生成的UUID

type 4什么也没告诉我。我不知道类型4在这种情况下意味着什么。


问题答案:

java.util.UUID.randomUUID()。toString()的长度是否始终等于36?

是!! 它是。

UUID实际上是一个128位的值(2长)。为了将128位表示为十六进制字符串,将有一个128/4=32char(每个char为4位长)。字符串格式还包含4(-),这就是长度为36的原因。

例: 54947df8-0e9e-4471-a2f9-9af509fb5889

32个十六进制字符+ 4个连字符= 36个字符。因此长度将始终相同。


更新:

我不知道第4种情况是什么意思?

仅供参考:有几种生成UUID的方法。在这里,类型4表示此uuid是使用随机数或伪随机数生成的。从Wiki-
Universally_unique_identifier#Versions

版本号

对于版本1和2,标准中定义了五个“版本”,在特定的用例中,每个版本可能比其他版本更合适。版本由字符串表示中的M表示。

版本1 UUID是根据时间和节点ID(通常是MAC地址)生成的;

版本2 UUID由标识符(通常是组或用户ID),时间和节点ID生成;

版本3和版本5 通过对名称空间标识符和名称进行哈希处理来生成确定性UUID。

版本4点 的UUID使用随机或伪随机数生成。