一、UUID
import java.util.UUID;
/**
* 生成32位的随机数UUID,并且去掉中间的-,字母全部转大写
* @return 32位的随机数UUID字符串
*/
public static String getUuid() {
return UUID.randomUUID().toString().replace("-", "").toUpperCase();
}
二、通过 Random 生成指定长度包含数字和字母的 UUID
package com.chenwc;
import java.util.Random;
import java.util.UUID;
public class RandomUuid {
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println(getUuidByNumberAndCharacter(32));
System.out.println(getUuidByCharacter(32));
System.out.println(getUuid());
System.out.println(UUID.randomUUID().toString());
}
/**
* 生成随机数字符串
*
* @param len 随机数字符串长度
* @return 随机数字符串
*/
public static String getRandomUuid(int len) {
return getRandomUuid(len, true, true, true, true);
}
/**
* 生成随机数字符串
*
* @param len 随机数字符串长度
* @param haveNumber 是否包含数字
* @param haveUpperLetter 是否包含大写字母
* @param haveLowerLetter 是否包含小写字母
* @param haveSymbol 是否包含特殊符号
* @return 随机数字符串
*/
public static String getRandomUuid(int len, boolean haveNumber, boolean haveUpperLetter, boolean haveLowerLetter,
boolean haveSymbol) {
if (len <= 0) {
System.out.println("长度要大于等于0");
return null;
}
StringBuilder val = new StringBuilder();
Random random = new Random();
List<String> arrayList = new ArrayList<String>();
if (haveNumber) {
arrayList.add("num");
}
if (haveLowerLetter) {
arrayList.add("lower");
}
if (haveUpperLetter) {
arrayList.add("upper");
}
if (haveSymbol) {
arrayList.add("char");
}
if (arrayList.isEmpty()) {
System.out.println("至少设置一种符号");
return null;
}
for (int i = 0; i < len; i++) {
String str = arrayList.get(random.nextInt(arrayList.size()));
if ("lower".equalsIgnoreCase(str)) {
// 产生a-z字母
val.append((char) (97 + random.nextInt(26)));
} else if ("upper".equalsIgnoreCase(str)) {
// 产生A-Z字母
val.append((char) (65 + random.nextInt(26)));
} else if ("num".equalsIgnoreCase(str)) {
// 产生0-9数字
val.append(random.nextInt(10));
} else if ("char".equalsIgnoreCase(str)) {
// 产生特殊字符33-47,58-64,91-96,123-126
int ay = random.nextInt(4);
if (ay == 0) {
val.append((char) (33 + random.nextInt(15)));
} else if (ay == 1) {
val.append((char) (58 + random.nextInt(7)));
} else if (ay == 2) {
val.append((char) (91 + random.nextInt(6)));
} else if (ay == 3) {
val.append((char) (123 + random.nextInt(4)));
}
}
}
return val.toString();
}
/**
* 生成指定长度随机数UUID,包含0-9数字和字母(字母包含大小写)
*
* @param len 指定长度
* @return 随机数UUID字符串
*/
public static String getUuidByNumberAndCharacter(int len) {
if (len <= 0) {
System.out.println("长度要大于等于0");
return null;
}
StringBuilder val = new StringBuilder();
Random random = new Random();
for (int i = 0; i < len; i++) {
String str = random.nextInt(2) % 2 == 0 ? "num" : "char";
if ("char".equalsIgnoreCase(str)) {
// 产生a-z或者A-Z字母
int nextInt = random.nextInt(2) % 2 == 0 ? 65 : 97;
val.append((char) (nextInt + random.nextInt(26)));
} else {
// 产生0-9数字
val.append(random.nextInt(10));
}
}
return val.toString();
}
/**
* 生成指定长度随机数UUID,包含0-9数字和字母(字母包含大小写)
*
* @param len 指定长度
* @return 随机数UUID字符串
*/
public static String getUuidByCharacter(int len) {
if (len <= 0) {
System.out.println("长度要大于等于0");
return null;
}
StringBuilder val = new StringBuilder();
Random random = new Random();
for (int i = 0; i < len; i++) {
// 产生a-z或者A-Z字母
int nextInt = random.nextInt(2) % 2 == 0 ? 65 : 97;
val.append((char) (nextInt + random.nextInt(26)));
}
return val.toString();
}
/**
* 生成随机数UUID
*
* @return 随机数UUID字符串
*/
public static String getUuid() {
StringBuilder val = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 32; i++) {
String str = random.nextInt(2) % 2 == 0 ? "num" : "char";
if ("char".equalsIgnoreCase(str)) {
// 产生a-z字母
val.append((char) (97 + random.nextInt(26)));
} else {
// 产生0-9数字
val.append(random.nextInt(10));
}
if (i == 7) {
val.append("-");
}
if (i == 11 || i == 15 || i == 19) {
val.append("-");
}
}
return val.toString().toUpperCase();
}
}
三、通过 Random 生成指定长度整数的随机数
package com.chenwc;
import java.util.Random;
public class RandomInt {
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println(getRandomInt(20));
}
/**
* 生成指定长度的随机整数
*
* @param len 长度
* @return 随机整数
*/
public static String getRandomInt(int len) {
if (len <= 0) {
System.out.println("长度要大于等于0");
return null;
}
StringBuilder rs = new StringBuilder();
for (int i = 0; i < len; i++) {
int a = getRandomInt();
//首位数字不能为0
if (0 == i) {
while (0 == a){
a = getRandomInt();
}
}
rs.append(a);
}
return rs.toString();
}
/**
* 获取一个0-9的整数
* @return 0-9的整数
*/
private static Integer getRandomInt(){
Random r = new Random();
return r.nextInt(10);
}
}