當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Java.util.UUID用法及代碼示例


表示不可變的通用唯一標識符 (UUID) 的類。 UUID 表示 128 位值。這些全局標識符存在不同的變體。此類的方法用於操作 Leach-Salz 變體,盡管構造函數允許創建 UUID 的任何變體(如下所述)。
UUID 有四種不同的基本類型:基於時間、DCE 安全、基於名稱和隨機生成的 UUID。這些類型的版本值分別為 1、2、3 和 4。

  • 用於在 Web 應用程序中創建會話 ID。它還用於創建交易 ID。
  • 它延伸對象類。
  • 它實現了可串行化可比接口。

構造函數:

UUID(long mostSigBits, long leastSigBits)

使用指定的數據構造一個新的 UUID。
mostSigBits - UUID 的最高有效位
lessSigBits - UUID 的最低有效位

方法:

  • int clockSequence():與此 UUID 關聯的時鍾序列值。
    14 位時鍾序列值是從此 UUID 的時鍾序列字段構造的。時鍾序列字段用於保證基於時間的 UUID 中的時間唯一性。
    ClockSequence 值僅在版本類型為 1 的基於時間的 UUID 中有意義。如果此 UUID 不是基於時間的 UUID,則此方法將引發 UnsupportedOperationException。
Syntax: public int clockSequence().
Returns: The clock sequence of this UUID.
Exception: 
UnsupportedOperationException - If this UUID is not a version 1 UUID

Java


// Java code illustrating clockSequence() method
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) throws
            UnsupportedOperationException
    {
        UUID gfg = UUID.fromString("c81d4e2e-bcf2-11e6-869b-7df92533d2db");
         
        // checking clock sequence
        System.out.println(gfg.clockSequence());
    }
}

輸出:

1691
  • intcompareTo(UUID val):將此 UUID 與指定的 UUID 進行比較。
    如果 UUID 不同的最重要字段大於第一個 UUID,則兩個 UUID 中的第一個大於第二個。
Syntax: public int compareTo(UUID val).
Returns: -1, 0 or 1 as this UUID is less than, equal to, or greater than val.
Exception: NA.

Java


// Java code illustrating compareTo() method
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) 
    {
        // generating random UUID
        UUID gfg1 = UUID.randomUUID();
        UUID gfg2 = UUID.randomUUID();
         
        int compare = gfg1.compareTo(gfg2);
        if(compare==1)
            System.out.println("gfg1 is greater than gfg2");
        else if(compare==0)
            System.out.println("both are equal");
        else
            System.out.println("gfg1 is smaller than gfg2");   
    }
}

輸出:

gfg1 is smaller than gfg2
  • 布爾等於(對象 obj):將此對象與指定對象進行比較。當且僅當參數不為 null、是 UUID 對象、具有與此 UUID 相同的變體並且包含逐位相同的值時,結果為 true。
Syntax: public boolean equals(Object obj).
Returns: true if the objects are the same; false otherwise
Exception: NA.

Java


// Java code illustrating equals() method
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) 
    {
        // generating random UUID
        UUID gfg1 = UUID.randomUUID();
        UUID gfg2 = UUID.randomUUID();
         
        if(gfg1.equals(gfg2))
            System.out.println("both are equal");
        else
            System.out.println("both are not same");
    }
}

輸出:

both are not same
  • 靜態 UUID fromString(字符串名稱):根據 toString() 方法中所述的字符串標準表示形式創建 UUID。
Syntax: public static UUID fromString(String name).
Returns: a UUID with the specified value.
Exception: 
IllegalArgumentException - If name does not conform to the string 
representation as described in toString()

Java


// Java code illustrating fromString() method
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) 
    {
        // generating random UUID
        UUID gfg = UUID.fromString("e52232e1-0ded-4587-999f-4dd135a4a94f");
        System.out.println("UUID is: " + gfg);
    }
}

輸出:

UUID is: e52232e1-0ded-4587-999f-4dd135a4a94f
  • 長getLeastSignificantBits():此方法返回此 UUID 128 位值的最低有效 64 位。
Syntax: public long getLeastSignificantBits().
Returns: The least significant 64 bits of this UUID's 128 bit value.
Exception: NA.

Java


// Java code illustrating getLeastSignificantBits() method
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) 
    {
        UUID gfg = UUID.randomUUID();
         
        // checking the least significant bit
        System.out.println("Least significant bit " + 
                gfg.getLeastSignificantBits());
    }
}

輸出:

Least significant bit -8406445530268383532
  • 長getMostSignificantBits():此方法返回此 UUID 128 位值的最高有效 64 位。
Syntax: public long getMostSignificantBits()
Returns: The most significant 64 bits of this UUID's 128 bit value.
Exception: NA

Java


// Java code illustrating getMostSignificantBits() bit
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) 
    {
        UUID gfg = UUID.randomUUID();
         
        // checking the most significant bit
        System.out.println("Most significant bit " + 
                gfg.getMostSignificantBits());
    }
}

輸出:

Most significant bit 8138958362250724568
  • int hashCode():此方法返回此 UUID 的哈希代碼。
Syntax: public int hashCode().
Returns: the hash code for this UUID.
Exception: NA.

Java


// Java code illustrating hashCode method
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) 
    {
        UUID gfg = UUID.randomUUID();
         
        // checking the hash code for this UUID
        System.out.println("Hash code " + 
                gfg.hashCode());
    }
}

輸出:

Hash code -2073067668
  • 靜態 UUID 名稱UUIDFromBytes(byte[] 名稱):用於根據指定字節數組檢索類型 3(基於名稱)UUID 的靜態工廠。
Syntax: public static UUID nameUUIDFromBytes(byte[] name)
Returns: A UUID generated from the specified array.
Exception: NA.

Java


// Java code illustrating nameUUIDFromBytes() methods
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) throws
         UnsupportedOperationException
    {
        // creating byte array
        byte[] b = {10, 23, 45};
         
        // creating UUID from array
        UUID gfg = UUID.nameUUIDFromBytes(b);
         
        // checking UUID
        System.out.println(gfg);
    }
}

輸出:

f76a74ae-83b6-389c-82ca-8ac0b9febd33
  • 長node():與此 UUID 關聯的節點值。
    48 位節點值是從此 UUID 的節點字段構造的。該字段旨在保存生成該 UUID 的機器的 IEEE 802 地址,以保證空間唯一性。
    該節點值僅在版本類型為 1 的基於時間的 UUID 中有意義。如果此 UUID 不是基於時間的 UUID,則此方法將拋出 UnsupportedOperationException。
Syntax: public long node().
Returns: The node value of this UUID.
Exception: 
UnsupportedOperationException - If this UUID is not a version 1 UUID

Java


// Java code illustrating node() method
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[])  
    {
        UUID gfg = UUID.fromString("c81d4e2e-bcf2-11e6-869b-7df92533d2db");
         
        // checking node value for this UUID
        System.out.println("Node value: "
          + gfg.node());
    }
}

輸出:

Node value: 138509024482011
  • 靜態 UUID randomUUID():用於檢索類型 4(偽隨機生成)UUID 的靜態工廠。 UUID 是使用加密的強偽隨機數生成器生成的。
Syntax: public static UUID randomUUID().
Returns: randomly generated UUID.
Exception: NA

Java


// Java code illustrating randomUUID() method
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) throws
            UnsupportedOperationException
    {
        UUID gfg = UUID.randomUUID();
         
        // checking  this UUID
        System.out.println("UUID: "
          + gfg);
    }
}

輸出:

UUID: 937418f1-f1b6-4f7a-b9f6-9fa51ba780e3
  • 長timestamp():與此 UUID 關聯的時間戳值。
    60 位時間戳值是從此 UUID 的 time_low、time_mid 和 time_hi 字段構造的。生成的時間戳自 UTC 時間 1582 年 10 月 15 日午夜起以 100 納秒為單位進行測量。
    時間戳值僅在版本類型為 1 的基於時間的 UUID 中有意義。如果此 UUID 不是基於時間的 UUID,則此方法將拋出 UnsupportedOperationException。
Syntax: public long timeStamp().
Returns: the time stamp value.
Exception: NA.

Java


// Java code illustrating timeStamp() method
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) throws
            UnsupportedOperationException
    {
        UUID gfg = UUID.fromString("c81d4e2e-bcf2-11e6-869b-7df92533d2db");
         
        // checking time stamp for this UUID
        System.out.println("time stamp: "
          + gfg.timestamp());
    }
}

輸出:

time stamp: 137004589606850094
  • 字符串toString():此方法返回表示此 UUID 的 String 對象。
Syntax: public String toString().
Returns: a string object for this UUID.
Exception: NA

Java


// Java code illustrating toString method 
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) throws
            UnsupportedOperationException
    {
        UUID gfg = UUID.fromString("c81d4e2e-bcf2-11e6-869b-7df92533d2db");
         
        // checking string format for this UUID
        System.out.println("String equivalent: "
          + gfg.toString());
    }
}

輸出:

String equivalent: c81d4e2e-bcf2-11e6-869b-7df92533d2db
  • int variant():與此 UUID 關聯的變體編號。變體編號說明了 UUID 的布局。
Syntax: public int variant()
Returns: The variant number of this UUID
Exception: NA

Java


// Java code illustrating variant() method
import java.util.UUID;
class UUIDdemo
{
    public static void main(String arg[]) throws
            UnsupportedOperationException
    {
        UUID gfg = UUID.fromString("c81d4e2e-bcf2-11e6-869b-7df92533d2db");
         
        // checking variant number for this UUID
        System.out.println("variant number is: "
          + gfg.variant());
    }
}

輸出:

variant number is: 2
  • int version():與此 UUID 關聯的版本號。版本號說明了此 UUID 是如何生成的。版本號的含義如下:
    • 1 基於時間的 UUID
    • 2 DCE安全UUID
    • 3 基於名稱的UUID
    • 4 隨機生成的UUID


相關用法


注:本文由純淨天空篩選整理自佚名大神的英文原創作品 Java.util.UUID class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。