目录
1.随机数
语法:
Math类:
double r = Math.random();
只能生成double类型的随机数,该数在[0.0,1.0)的单位之内,返回值是一个伪随机选择的数。
Random类:
double r = Math.random();
double r2= new Random(long seed);
注:在创建一个Random对象的时候可以给定任意一个合法的种子数,种子数只是随计算算法的起源数字,和生成的随机数在区间没有任何关系。一般不会设置种子数。
生成的随机数是int long double类型的随机数
//2.Random类
Random r1 = new Random();
// Random r2 = new Random(1);
//生成[0,1.0)区间的小数
double d1 = r1.nextDouble();
System.out.println(d1);
//生成[0,5.0)区间的小数
double d2 = r1.nextDouble() * 5;
System.out.println(d2);
//生成[1,2.5)区间的小数
double d3 = r1.nextDouble() * 1.5 + 1;//(n2-n1) + n1
System.out.println(d3);
//生成[0,10)区间的整数
//法一
int n1 = r1.nextInt(10);
System.out.println(n1);
//法二
n1= Math.abs(r1.nextInt() % 10);
System.out.println(n1);
Random rd = new Random(25);
int i;
i = rd.nextInt(100);
System.out.println(i);
区别:
random 在Math类这个方法中(由Math)所提供的话,那么它实在内部去调用的,缺点:和启动时间有关系,相隔时间很短的两个的random可能会得到两个一模一样的double类型
java.util的random,在调用的时候,可以去实现Java.lang.Math一样的功能,而且有很多的调用方法,相对比来讲它是比较灵活的。
2.正则表达式
正则表达式又称规则表达式,是为了验证输入内容是否符合标准而定义的一套规则
正则表达式的应用
方法
String[] strs ={"a","ab","b","abc"};
//定义正则表达式
String regex = "[abc]";
//创建正则表达式对象
Pattern p = Pattern.compile(regex);
//进行匹配
Matcher m = null;
for(int i = 0;i < strs.length;i++){
m = p.matcher(strs[i]);
//开始匹配
if(m.matches()){
System.out.println("第"+(i+1)+"个元素符合正则表达式");
}else{
System.out.println("第"+(i+1)+"个元素不符合正则表达式");
}
}
//获取三个或三个以上字母组成的单词
String str = "good good study, day day up";
String regex ="[a-z]{3,}\\b";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
System.out.println(m.matches());
while (m.find()){
System.out.println(m.group());//获取匹配的子序列
}
3.递归
java的递归
1.一定有定义递归的终止条件
2.递归的次数不要太多。容易出现StackOverflowError栈内存溢出错误。
其实递归就是在栈内训不断加载同一个函数
package util;
public class RecursionDemo {
/**
*
* 计算n!(n的阶乘)
* 示例:5!=5*4*3*2*1
* @param num
* @return
* static 关键字用在方法上表示该方法为静态方法,调用该方法不需要创建对象
*/
public static long factorial(int num){
if(num == 1){
return 1;
}else{
//递归逐步计算
return num* factorial(num - 1);
}
}
案例:
1.二重循环实现
2.递归实现
栈是专门用来存放栈帧的,每执行一个方法,就会出现一个压栈的操作,采用递归产生的栈帧比较多,递归会影响到内存,for循环是执行一个方法,然后压入栈帧,一次只存在一个栈帧。