JavaOOP-常用类-随机数、正则表达式、递归

目录

1.随机数

Math类:

Random类:

2.正则表达式

正则表达式的应用

 方法

3.递归


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循环是执行一个方法,然后压入栈帧,一次只存在一个栈帧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么时候养猫猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值