获取当前时间戳和随机数的获取、Java Random、ThreadLocalRandom、UUID类中的方法应用(随机数)

(一)获取时间戳:

第一种方法:

var timestamp = Date.parse(new Date());

结果:1280977330000
第二种方法:

var timestamp = (new Date()).valueOf();

结果:1280977330748

第三种方法:

var timestamp=new Date().getTime();
结果:1280977330748

第一种:获取的时间戳是把毫秒改成000显示,即获取秒数。
第二种和第三种是获取了当前毫秒的时间戳。


获取随机数:

Math.random(); 返回0和1间(包括0,不包括1)的一个随机数。

Math.ceil(n); 返回大于等于n的最小整数。
用Math.ceil(Math.random()*10);时,主要获取1到10的随机整数,取0的几率极小。

Math.round(n); 返回n四舍五入后整数的值。
用Math.round(Math.random());可均衡获取0到1的随机整数。
用Math.round(Math.random()*10);时,可基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半。

Math.floor(n); 返回小于等于n的最大整数。

用Math.floor(Math.random()*10);时,可均衡获取0到9的随机整数。

(二)Java Random、ThreadLocalRandom、UUID类中的方法应用(随机数)

1.Random:产生一个伪随机数(通过相同的种子,产生的随机数是相同的);

1
2
3
4
Random r= new  Random();
System.out.println(r.nextBoolean());
System.out.print(r.nextInt( 50 )); //随机生成0~50的随机数,不包括50
System.out.println(r.nextInt( 20 )+ 30 ); //随机生成30~50的随机数,不包括50

2.ThreadLocalRandom:是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。ThreadLocalRandom不是直接用new实例化,而是第一次使用其静态方法current()。
从Math.random()改变到ThreadLocalRandom有如下好处:
我们不再有从多个线程访问同一个随机数生成器实例的争夺。
取代以前每个随机变量实例化一个随机数生成器实例,我们可以每个线程实例化一个。

1
2
3
ThreadLocalRandom t=ThreadLocalRandom.current();
System.out.println(t.nextInt( 50 )); //随机生成0~50的随机数,不包括50
System.out.println(t.nextInt( 30 50 )); //随机生成30~50的随机数,不包括50

 

3.UUID:  UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。

1
2
String u=UUID.randomUUID().toString();
System.out.println(u);

 

 生成5个字符的验证码:

1
2
3
4
5
6
7
8
9
10
String content= "ABCDEFGHIJKLMNOPQRSTUVWHYZ" ; //创建23个大写字母的字符串
content+=content.toLowerCase(); //把大写字母转换成小写字母,相连接
content+= "0123456789" ; //连接0~9的数字。
Random r= new  Random(); //创建一个随机数对象
StringBuilder b= new  StringBuilder( 5 ); //创建空间大小为5的StringBuilder对象
for  ( int  i =  0 ; i < 5 ; i++) {
     char  n=content.charAt(r.nextInt(content.length())); //截取一个从0到content.length()之间的字符,循环输出5个不同的字符,追加到一起
     b.append(n);
}
System.out.println(b.toString()); //转成字符串输出5个字符

 

 

 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值