//方法一 需要包:import java.util.Random;
//生成的字符串每个位置都有可能是str中的一个字母或数字
int length = 12;
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
StringBuilder stringBuilder = new StringBuilder();
for(int i = 0;i<length;i++){
//random.nextInt(62)会生成一个范围在0~x(不包含X)内的任意正整数
int num = random.nextInt(62);
stringBuilder.append(str.charAt(num));
}
System.out.println(stringBuilder);
//方法二 org.apache.commons.lang包下有一个RandomStringUtils类,其中有一个randomAlphanumeric(int length)函数,
// 可以随机生成一个长度为length的字符串。
String string= RandomStringUtils.randomAlphanumeric(12);
System.out.println(string);
//产生5位长度的随机字符串,中文环境下是乱码
System.out.println(RandomStringUtils.random(5));
//使用指定的字符生成5位长度的随机字符串
System.out.println(RandomStringUtils.random(5, new char[]{'a','b','c','d','e','f', '1', '2', '3'}));
//生成指定长度的字母和数字的随机组合字符串
System.out.println(RandomStringUtils.randomAlphanumeric(5));
//生成随机数字字符串
System.out.println(RandomStringUtils.randomNumeric(5));
//生成随机[a-z]字符串,包含大小写
System.out.println(RandomStringUtils.randomAlphabetic(5));
//生成从ASCII 32到126组成的随机字符串
System.out.println(RandomStringUtils.randomAscii(4));
//方法三 可以指定某个位置是a-z、A-Z或是0-9
Random random1=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<length;i++){
int number=random1.nextInt(3);
long result=0;
switch(number){
case 0:
//对应A-Z 参考ASCII编码表
result=Math.round(Math.random()*25+65);
sb.append(String.valueOf((char)result));
break;
case 1:
//对应a-z 参考ASCII编码表
result=Math.round(Math.random()*25+97);
sb.append(String.valueOf((char)result));
break;
case 2:
//对应数字
sb.append(String.valueOf(new Random().nextInt(10)));
break;
}
}
System.out.println(sb);