UUID.randomUUID().toString().replaceAll("-", "")通过上述方法就可以返回一串数字字符串。
//先看不加参数的源码public static UUID randomUUID() {
SecureRandom ng = Holder.numberGenerator
byte[] randomBytes = new byte[16]
ng.nextBytes(randomBytes)
randomBytes[6] &= 0x0f /* clear version */
randomBytes[6] |= 0x40 /* set to version 4 */
randomBytes[8] &= 0x3f /* clear variant */
randomBytes[8] |= 0x80 /* set to IETF variant */
return new UUID(randomBytes)//看到这里没,其实也是调用的带参数的,只不过
//所带参数的是给你随机出来的
}
//再看带参数的
public static UUID nameUUIDFromBytes(byte[] name) {
MessageDigest md
try {
md = MessageDigest.getInstance("MD5")
} catch (NoSuchAlgorithmException nsae) {
throw new InternalError("MD5 not supported")
}
byte[] md5Bytes = md.digest(name)//这里就是对给的byte[]参数进行md5运算之后再进行计算UUID
md5Bytes[6] &= 0x0f /* clear version */
md5Bytes[6] |= 0x30 /* set to version 3 */
md5Bytes[8] &= 0x3f /* clear variant */
md5Bytes[8] |= 0x80 /* set to IETF variant */
return new UUID(md5Bytes)
}