java.util.UUID 工具类详解

2015-08-12|来源:

java.util.UUID是jdk1.5之后新增的一个工具类,在java.util下,用它可以产生一个号称全球唯一的ID

1、一个UUID表示一个128位的值,,一般用16进制表示。

2、UUID是一个128位长的数字算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成UUID。从理论上讲,如果一台机器每秒产生10000000个UUID,则可以保证(概率意义上)3240年不重复。

3、它是用于创建随机文件名,在Web应用程序的会话ID,事务ID等

4、还有UUID四种不同的基本类型:基于时间,DCE安全性,基于名称,并随机生成的UUID


示例:
import java.util.UUID;
public class Test {
   public static void main(String[] args) {
       UUID uuid = UUID.randomUUID();
       System.out.println (uuid);
   }
}


帮助文档说明:

java.util
类 UUID

java.lang.Object继承者 java.util.UUID
所有已实现的接口:
Serializable, Comparable<UUID>

表示通用唯一标识符 (UUID) 的类。 UUID 表示一个 128 位的值。

这些通用标识符具有不同的变体。此类的方法用于操作 Leach-Salz 变体,不过构造方法允许创建任何 UUID 变体(将在下面进行描述)。

变体 2 (Leach-Salz) UUID 的布局如下: long 型数据的最高有效位由以下无符号字段组成:

 0xFFFFFFFF00000000 time_low
 0x00000000FFFF0000 time_mid
 0x000000000000F000 version
 0x0000000000000FFF time_hi
 
long 型数据的最低有效位由以下无符号字段组成:
 0xC000000000000000 variant
 0x3FFF000000000000 clock_seq
 0x0000FFFFFFFFFFFF node
 

variant 字段包含一个表示 UUID 布局的值。以上描述的位布局仅在 UUID 的 variant 值为 2(表示 Leach-Salz 变体)时才有效。

version 字段保存描述此 UUID 类型的值。有 4 种不同的基本 UUID 类型:基于时间的 UUID、DCE 安全 UUID、基于名称的 UUID 和随机生成的 UUID。 这些类型的 version 值分别为 1、2、3 和 4。

有关用于创建 UUID 的算法的更多信息,请参阅 RFC 4122: 通用唯一标识符 (Universally Unique Identifier) (UUID) URN Namespace, section 4.2 ";创建基于时间的 UUID" 的算法。


构造方法摘要
UUID(long mostSigBits, long leastSigBits)
         使用指定的数据构造新的 UUID
方法摘要
int clockSequence()
         与此 UUID 相关联的时钟序列值。
int compareTo(UUID val)
         将此 UUID 与指定的 UUID 比较。
boolean equals(Object obj)
         将此对象与指定对象比较。
static UUID fromString(String name)
         根据 toString() 方法中描述的字符串标准表示形式创建 UUID
long getLeastSignificantBits()
         返回此 UUID 的 128 位值中的最低有效 64 位。
long getMostSignificantBits()
         返回此 UUID 的 128 位值中的最高有效 64 位。
int hashCode()
         返回此 UUID 的哈希码。
static UUID nameUUIDFromBytes(byte[] name)
         根据指定的字节数组获取类型 3(基于名称的)UUID 的静态工厂。
long node()
         与此 UUID 相关的节点值。
static UUID randomUUID()
         获取类型 4(伪随机生成的)UUID 的静态工厂。
long timestamp()
         与此 UUID 相关联的时间戳值。
String toString()
         返回表示此 UUIDString 对象。
int variant()
         与此 UUID 相关联的变体号。
int version()
         与此 UUID 相关联的版本号。


     

相关问答

更多

Springmvc 问题:Could not instantiate bean class [java.util.List]: Specified class is an interface

不能实例化bean类的java.util.List]:指定类是一个接口 配置的bean不能是接口类

JAVA自动创建实体类工具?

AutoJava 是一款免费的,针对于Oracle和SQLserver数据库的、以面向对象模式的Java代码生成工具。AutoJava根据O/R Mapping规则生成表对应的Java对象,并且生成了所有的添加、删除、修改、查询等底层数据库操作代码。借助于AutoJava我们基本上不用再写与数据库相关的操作代码,只需要在此基础上实现相关的业务逻辑,将我们从重复的无太大技术含量的工作中解放出来。 AutoJava 是我在工作中为了省时间而写出来的一个小工具,希望AutoJava能给广大的Java人员 ...

java多线程(断点)下载

package download; /** * * @author annegu * @since 2009-07-16 * */ public class DownloadStartup { private static final String encoding = "utf-8"; public static void main(String[] args) { DownloadTask downloadManager = new DownloadTask(); // String urlS ...

JAVA的集合框架中有那些类,他们都有那些区别

区别详解,没法详解,数据结构就够研究几个月的,不过要是把目标放在会用上,就容易多了,也无需了解底层,看看API文档,知道什么方法是干什么的会用就行了。 集合类巨多无比,其实常用的也就这么几个,其他的都不用太看,你就看看:ArrayList、LinkedList、HashMap、TreeMap、HashSet 就行了,我理解也有限,简单说一下这几个: Collection下面有List和Set,List有ArrayList、LinkedList,ArrayList底层以Object类型数组实现,特点 ...

有把java代码直接转成uml类图的工具吗

模型开发工具(MDT)提供了一些示范性工具,在元模型的基础上的发展模式。它支持创建UML图,从代码的逆向工程到UML图等等。

专题教程

JAVA概述
第一部分:java入门基础
第二部分:java常用类
第三部分:jdbc系列教程
第四部分:java高级特征
Gson教程
快速了解 jdk8 新特征

相关文章

更多

最近更新

更多