java uuid正则表达式_Java基础17-随机数、正则表达式

一、随机数Random

1.Math.Random

返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。不包含1.0。[0,1);

public static voidmain(String[] args) {//生成伪随机数

System.out.println(Math.random());

}

运行结果为:

0b86fc24527a9ea4df34782630c9bef8.png

2.Random类

此类的实例用于生成伪随机数流。

构造方法摘要

使用单个 long 种子创建一个新的随机数生成器。

什么是伪随机数呢?我们来看一个例子

333f963d45c2252d10a8f6db0ac4a6f9.png

64d98d207c927ac42c8374ca11f785a7.png

r1和r2生成的随机数竟然是一样的!这是为什么呢?

这就是伪字的真谛,即通过相同的种子生成的随机数是一样的

方法摘要

protected  int

生成下一个伪随机数。

boolean

boolean 值。

void

生成随机字节并将其置于用户提供的 byte 数组中。

double

0.0 和 1.0

之间均匀分布的 double 值。

float

0.0 和 1.0

之间均匀分布的 float 值。

double

double 值,其平均值是

0.0,标准差是 1.0。

int

int 值。

int

返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int

值。

long

long 值。

void

使用单个 long 种子设置此随机数生成器的种子。

3.ThreadLocalRandom类

是java7新增类,random类的子类,在多线程并发情况下相对于random可以减少多线程资源竞争,保证了线程安全问题。

ThreadLocalRandom不是直接用new实例化,而是第一次使用其静态方法current()。

cdcce27d754d59379b810087eaf07e88.png

5f98ad856d988d7978bff9cbb377669b.png

4.UUID类

通用唯一识别: 在一台机器上生成的数字,它保证对在同一时空中 的所有机器都是唯一的。

* UUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡, 当地时间、一个随机数来生成UUID。

3a03764f7b913dd0410d140b6e82f7af.png

23aa643f5fb82c249674150d54e1be4d.png

案例:生成验证码

importjava.util.Random;importjava.util.UUID;public classyanzhengma {public static voidmain(String[] args) {//生成一个5位数的随机数//截取UUID生成字符串的前五位

String Num=UUID.randomUUID().toString().substring(0, 5);

System.out.println(Num);//第二种方式

String str="ABCDEFGHYJKLMNOPQISTUVWXYZ";

str+=str.toLowerCase();

str+="0123456789";//将大小写字母和数字拼接起来

StringBuilder sb=new StringBuilder(5);for(int i=0;i<5;i++) {//每次随机在这个拼接好的字符串中随机取出一个字符

char ch=str.charAt(new Random().nextInt(str.length()));//index必须在[0,str.lenth()]之间//用StringBuilder进行拼接

sb.append(ch);

}

System.out.println(sb);

}

}

e0434ab2a9b9e46ef07450059d9dadd6.png

二、正则表达式

* 主要用于(匹配判断,分割操作,替换操作),最多的是匹配判断

1db4c5bc5002e13dd78c75bfd780b2c4.png

c142f17aeb1f23f1597a6b34825c7cf8.png

0560fa55511387226c17198fcbd35ecc.png

42a24a51a63fad800ff4b8b0d294de35.png

来看一个案例:

判断一个字符串全部由数字组成

public classRegex {public static voidmain(String[] args) {

String input="1235sa65";boolean ok=isNumber(input);

System.out.println(ok);

}//判断一个字符串全部由数字组成

private static booleanisNumber(String str) {char[] arr=str.toCharArray();for(charc:arr) {if(c'9') {return false;

}

}return true;

}

}

是不是有些麻烦?

下边用正则表达式

public classRegex {public static voidmain(String[] args) {

String input="1235sa65";

System.out.println("123sa456".matches("\\d*"));

}

}

6d1168914c34c2e2ea8923136c9c1cc8.png两个的结果是一样的,用正则表达式简化了代码,更优化了。

下边我们看看Pattern类中的方法

方法摘要

String regex,

int flags)

将给定的正则表达式编译到具有给定标志的模式中。

int

static boolean

static String

String 的字面值模式 String。

CharSequence input,

int limit)

围绕此模式的匹配拆分给定输入序列。

常用matches和split还有toString还有一个replace和replaceAll

一个案例来搞懂,判断手机号码

1:要求为11位数字

2:第1位为1,第2位为3、4、5、7、8中的一个,后面9位为0到9之间的任意数字。

483932083927be4625ca6b7d646d3b27.png结果为:true

再来一个替换的案例

把文字中的数字替换成*

f4d12408612a78a5e9b25621a2c9e4b2.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值