package cn.javastudy;
/*生成随机字符
* 字符是使用整数来编码的,产生一个字符就是产生一个整数
* 每一个字符都有唯一的存在十六进制数0到ffff之间的Unicode
* 表达式:
* (int) (Math.random()*(65535+1))
* (int)'a'到(int)'z'之间的随机整数是:
* (int )((int)'a' + Math.random()*((int)'z' - (int)'a' + 1))
*
* 由此可以生成任意两个ch1和ch2之间的字符:
* (char)(ch1 + Math.random() * (ch2 - ch1 + 1))
*
*/
public class RandomCharacter{
public static char getRandomCharacter(char ch1,char ch2){
return (char)(ch1+Math.random()*(ch2-ch1));
}
public static char getRandomLowerCaseLetter(){ //产生随机小写字母
return getRandomCharacter('a','z');
}
public static char getRandomUpperCaseLetter() { //产生随机大写字母
return getRandomCharacter('A','Z');
}
public static char getRandomDigitCharacter() { //产生随机数字字符
return getRandomCharacter('0','9');
}
public static char geRandomtCharacter() { //产生随机字符
return getRandomCharacter('\u0000','\uFFFF');
}
}
由上面的代码我们可以知道他有五个重载的方法,随机获取某种特定类型的字符。
下面给出一个测试程序
package cn.javastudy;
/*测试类
* 显示175个随机小写字母
*/
public class TestRandomCharacter {
public static void main(String[] args) {
final int NUMBER_OF_CHARS = 175;
final int CHARS_PER_LINE = 25;
for(int i = 0;i<NUMBER_OF_CHARS;i++) {
char ch = RandomCharacter.getRandomLowerCaseLetter();
if((i+1)%CHARS_PER_LINE==0) {
System.out.println(ch);
}else {
System.out.print(ch);
}
}
}
最后结果如图: