UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得)
如果使用的JDK1.5的话,那么生成UUID变成了一件简单的事,以为JDK实现了UUID:
java.util.UUID,直接调用即可.
UUID uuid = UUID.randomUUID();
String s = UUID.randomUUID().toString();
UUID的唯一缺陷在于生成的结果串会比较长。其格式为:xxxxxxxx-xxxx- xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-4-16)
(Example: C2FEEEAC-CFCD-11D1-8B05-00600806D9B6
)
由于需求我们也许要用到没有“-”的UUID
/**
* 获得一个去掉“-”符号的UUID
* @return String UUID
*/
public static String getUUID(){
String s = UUID.randomUUID().toString();
//去掉“-”符号
return s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24);
}
有时我们对UUID的长度有要求
//获得指定数量的UUID
public static String[] getUUID(int number) {
if (number < 1) {
return null;
}
String[] ss = new String[number];
for (int i = 0; i < number; i++) {
ss[i] = getUUID();
}
return ss;
}
也可用
String.subSequence(int beginlndex ,int endlndex)
需要注意的是:
如果 beginIndex 或 endIndex 为负,如果 endIndex 大于 length() 或 beginIndex 大于 startIndex ,会抛异常 IndexOutOfBoundsException