我们在代码中使用UUID生成唯一标识符:
import java.util.UUID; /** * Created by lay on 18/02/2018. */ public class test { public static void main(String[] args) { System.out.println(UUID.randomUUID());; } }
打印:
04f04c46-d2b2-4699-bc4d-91168cd9e5a4
我们看到了36个字符,和API文档里面描述的128位的值不符。
抛去固定的4个“-”,一共32个字符。
API文档中并未直接说明这一串唯一标识符是16进制,但其描述这个字符串的组成时各个部分其实都是16进制:
例如描述最高有效位:
0xFFFFFFFF00000000 time_low 0x00000000FFFF0000 time_mid 0x000000000000F000 version 0x0000000000000FFF time_hi
那么既然它是表示16进制的话,我们就需要看看它等于多少位二进制:
2个16进制 = 8位二进制
32个16进制 = 128位二进制
所以UUID表示128位二进制或者32位字符的唯一标识符
UUID由128位组成,那么组合的种类就是有限个,所以对于UUID作为唯一标识符不是永远不会重复,而是重复的概率非常的低。