1.第一种 生成的字符串每个位置都有可能是str中的一个字母或数字,需要导入的包是import java.util.Random;
//length用户要求产生字符串的长度
public static String getRandomString(int length){
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<length;i++){
int number=random.nextInt(62);
sb.append(str.charAt(number));
}
return sb.toString();
}
2.第二种 可以指定某个位置是a-z、A-Z或是0-9,需要导入的包是import java.util.Random;
//可以指定字符串的某个位置是什么范围的值
public static String getRandomString2(int length){
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<length;i++){
int number=random.nextInt(3);
long result=0;
switch(number){
case 0:
result=Math.round(Math.random()*25+65);
sb.append(String.valueOf((char)result));
break;
case 1:
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;
}
}
return sb.toString();
}
3.第三种 org.apache.commons.lang包下有一个RandomStringUtils类,其中有一个randomAlphanumeric(int length)函数,可以随机生成一个长度为length的字符串。
//产生5位长度的随机字符串,中文环境下是乱码
RandomStringUtils.random(5);
//使用指定的字符生成5位长度的随机字符串
RandomStringUtils.random(5, new char[]{'a','b','c','d','e','f', '1', '2', '3'});
//生成指定长度的字母和数字的随机组合字符串
RandomStringUtils.randomAlphanumeric(5);
//生成随机数字字符串
RandomStringUtils.randomNumeric(5);
//生成随机[a-z]字符串,包含大小写
RandomStringUtils.randomAlphabetic(5);
//生成从ASCII 32到126组成的随机字符串
RandomStringUtils.randomAscii(4)
4.知识点:Math.random( )的取值范围是[0.0,1.0),能取到0但是不会取到1
//生成随机三位数
(int)(Math.random() * 900 + 100);//[0.0,1.0) * 900 -> [0,899] + 100 -》 【100,999】
//随机生成小写字母 [0-25] + 97 -> 97 122
System.out.println((char)(Math.random() * 26 + 97));//小写字母 (char)(97-122)
//随机生成大写字母 [0-25] + 65
System.out.println((char)(Math.random() * 26 + 65));//大写字母 (char)【65-90】
5.小测试:随机生成3个字母,第一个字母是大写,其余两个字母小写
public class Exec3{
public static void main(String[] args){
//String str = 随机大写字母 随机生成另两个小写字母
char x = (char)(Math.random() * 26 + 65);
char y = (char)(Math.random() * 26 + 97);
char z = (char)(Math.random() * 26 + 97);
// char + char + char:算数加法
String str = "" + x + y + z;
System.out.println(str);
}
}