Random
生成的是伪随机数,通过相同的种子生成的随机数也是相同的.
public Random() 默认使用的是系统时间作为种子
public Random(lang seed) 根据指定的种子
Random rd=new Random();
System.out.println(rd.nextInt(100));//范围0-99
Random rd1=new Random(10);//带参数后 得出的数都是固定的
System.out.println(rd1.nextInt(10)); //参数表示的不在是范围 变成了单个数字代表的随机数
ThreadLocalRandom
java7新增的类 用于多线程并发保证线程的安全性。因为构造器是私有的,只提供了一个方法 ThreadLocalRandom.current(); 用于返回当前对象.
ThreadLocalRandom ra=ThreadLocalRandom.current();
System.out.println(ra.nextInt(0,100));// 返回一个0-99之间的数
UUID
是一个128位长的数字 一般用16进制表示。随机电脑中唯一的字符串
String uuid =UUID.randomUUID().toString();
System.out.println(uuid);
例子:随机生成验证码
- StringBuffer() 与StringBuilder() 方法的比较 前者全部加了synchronized 后者没有 用于字符串的多长度拼接
String 拼接浪费内存而StringBuffer 直接是字符串的拼接,
public static void main(String[] args) {
String str="ABCDEFGHIJKLMNOQPLSTUVWXYZ";
str+=str.toLowerCase(); //小写字符
str+="0123456789";
StringBuilder sb=new StringBuilder(5); //这里我们只需要5位即可
for(int i=0;i<5;i++)
{
char ch=str.charAt(new Random().nextInt(str.length()));
sb.append(ch);
}
System.out.println(sb);
}