java uuid生成方法

本文介绍了UUID(全局唯一标识符)的概念及其生成方法。探讨了在JDK1.5中通过内置类java.util.UUID生成UUID的过程,并推荐了一个第三方开源类库JUG,该库能提供跨平台的真正UUID生成方案。

UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。

1. JDK1.5
如果使用的JDK1.5的话,那么生成UUID变成了一件简单的事,以为JDK实现了UUID: java.util.UUID,直接调用即可.

Java代码 
import java.util.UUID;   
  
public class Test {   
    public static void main(String[] args) {   
        UUID uuid = UUID.randomUUID();   
        System.out.println(uuid.toString());   
    }   
}

 

2. 第三方开源类库(推荐使用):
最著名的是 JUG .特点上是: 纯Java实现,开源,LGPL协议。采用了Native的方式产生真正的Uuid.而且提供了不同平台的实现,包括:
Linux / x86
Windows (98, ME, NT, 2K, XP?) / x86
Solaris / Sparc
Mac OS X
FreeBSD / x86

Java代码

import org.doomdark.uuid.UUIDGenerator;   
  
public class Test {   
    public static void main(String[] args) {   
        String primaryKey = UUIDGenerator.getInstance()   
                .generateRandomBasedUUID().toString();   
        primaryKey = primaryKey.replaceAll("-", "");   
  
        System.out.println(primaryKey);   
    }   
  
} 

 

Java 中,可以使用 `java.util.UUID` 类来生成 UUID 并将其转换为字符串。以下是具体的实现方法: #### 生成标准格式的 UUID 字符串 使用 `UUID.randomUUID().toString()` 方法可以生成一个标准格式的 UUID 字符串,该字符串包含连字符 `-`。示例代码如下: ```java import java.util.UUID; public class UUIDExample { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); String uuidString = uuid.toString(); System.out.println("标准格式的 UUID 字符串:" + uuidString); } } ``` 运行上述代码,会输出类似 `31971e9c-4cbd-4c12-bb74-6b52f3dfb846` 这样的字符串,其中包含连字符 `-`[^2]。 #### 生成无连字符的 32 位 UUID 字符串 若需要生成无连字符的 32 位 UUID 字符串,可以在生成标准格式的 UUID 字符串后,使用 `replace("-", "")` 方法去除连字符。示例代码如下: ```java import java.util.UUID; public class UUIDWithoutHyphenExample { public static void main(String[] args) { String uuidString = UUID.randomUUID().toString().replace("-", ""); System.out.println("无连字符的 32 位 UUID 字符串:" + uuidString); } } ``` 运行上述代码,会输出类似 `86f4d1bad1d44f01bd53c01031126c2f` 这样的字符串,不包含连字符 `-`[^4]。 #### 从指定的 UUID 字符串生成 UUID 对象 使用 `UUID.fromString()` 方法可以根据指定的 UUID 字符串生成一个 `UUID` 对象。不过,如果指定的 UUID 字符串不符合 UUID 的格式,会抛出 `IllegalArgumentException` 异常。示例代码如下: ```java import java.util.UUID; public class UUIDFromStringExample { public static void main(String[] args) { String uuidStr = "31971e9c-4cbd-4c12-bb74-6b52f3dfb846"; try { UUID uuid = UUID.fromString(uuidStr); System.out.println("从字符串生成UUID 对象:" + uuid); } catch (IllegalArgumentException e) { System.out.println("输入的字符串不是有效的 UUID 格式:" + e.getMessage()); } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值