JAVA 随机类 Math工具类

package ne;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
import java.util.UUID;

import static java.lang.Math.*;

public class c2 {


    public static void main(String[] args) throws ParseException {
        // System.out.printf("");
//        int sun = 0;
//        for (int i = 0; i < 100; i++) {
//            sun += i;
//        }
//        System.out.printf("%d", sun);
//        System.out.printf("%d", sun);

        UUID id = UUID.randomUUID();  //随机ID
        System.out.println(id);      //dd8acc56-d02c-4188-b5f0-5238d16e46d5
        System.out.println(id.toString().length());   //36

        //随机类Random
        Random rand = new Random();
        //true false 真假随机
        System.out.println(rand.nextBoolean());//false true

        //0 - 5随机整数
        System.out.println(rand.nextInt(6));  //2

        System.out.println(Math.random()); //返回double   0.2185571904596617

        //随机颜色
        int rr = rand.nextInt(256);//0-255
        int gg = rand.nextInt(256);
        int bb = rand.nextInt(256);
        System.out.printf("#%02x%02x%02x%n", rr, gg, bb);  //#61bd99

        System.out.println(rand.nextDouble());   //0.2169224401330715
        System.out.println(rand.nextFloat());  //0.07115024
        System.out.println(rand.nextLong());   //1927605436300879373
        System.out.println(rand.nextInt());   //-177119358


        System.out.println(rand.nextGaussian());  //-0.7582383393957878


        //java新版权
        var randX = new Random();
        System.out.println(randX.nextInt(10, 21));  //产生一个范围内随机数
        for (int i = 1; i <= 300; i++) {
            System.out.printf("%d ", randX.nextInt(10, 21));
            if (i % 20 == 0) {
                System.out.println();
            }
        }


        //数组随机获取
        String[] stus = new String[]{"李四", "赵六", "张三", "王五", "李强", "jack", "james gosling"};
        int size = stus.length;
        System.out.println(size);
        var randv = new Random();
        int index = randv.nextInt(stus.length);
        //index 5
        String info = String.format("有%d人学生,本次选中的学生是:%s", size, stus[index]);
        System.out.println(info);

        //a-b 之间随机日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        var a = "2021-01-01 00:00:00";
        var d1 = sdf.parse(a).getTime();
        System.out.println(d1 / 1000);
//System.out.printf("%1$tF %1$tT%n",946656000000l);
        var b = "2021-11-24 09:23:30";
        var d2 = sdf.parse(b).getTime();
        System.out.println(d2 / 1000);
//System.out.printf("%1$tF %1$tT%n",1451577599000L);
        var r = new Random();
// 0 - num
        var num = d2 - d1 + 1;  //时间戳相减差值
        var d3 = d1 + (long) (r.nextDouble() * num);
        System.out.printf("%1$tF %1$tT%n", d3);


        //2022-1-1 0:0:0 - now之间随机日期
        System.out.printf("%1$tF %1$tT %n", 0l);
        SimpleDateFormat sdfx = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        for (int i = 0; i <= 15; i++)
            System.out.printf("%1$tF %1$tT %n", nextLong(sdfx.parse("2021-01-01 00:00:00").getTime(), new Date().getTime()));


        //Math工具类  科学计算
        //java.lang.Math 构造方法是私有,不让new
        double pi = PI;
        System.out.printf("======================\n");
        System.out.println(pi);
        System.out.println(Math.random());
        System.out.println(round(1.4));//1   //四舍五入到最接近的 int值
        System.out.println(round(1.5));//2
        System.out.println(floor(1.4));//1.0   //小于或等于参数的最大(最接近正无穷大)浮点值,等于数学整数。
        System.out.println(floor(1.5));//1.0
        System.out.println(Math.ceil(1.4));//2.0  //最大(最接近负无穷大)的浮点值大于或等于参数,并且等于一个数学整数。
        System.out.println(Math.ceil(1.5));//2.0
        System.out.println(Math.pow(2, 3));
        System.out.println(Math.max(10, 20));//20   //最大值
        System.out.println(Math.min(10, 20));//10   //最小值


        //System.out.println(Math.random());
//System.out.println(Math.random());
//System.out.println(Math.random());
//System.out.println(Math.random());
//产生0-9 随机数
        for (int i = 1; i <= 20; i++) {
//0 - 9 随机整数
            int numv = (int) round(Math.random() * (9 - 0)) + 0;
// 0.0000001 * 9 0.000009 0
// 0.999999924 *9 8.1 8
            System.out.printf("%d ", numv);
        }
//编写程序,输出2021-07-01 0:0:0 到 now 之间的随机Date
        SimpleDateFormat sdfv = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = sdfv.parse("2021-7-1 0:0:0");
        long start = d.getTime();
        long now = System.currentTimeMillis();
        long time = round(Math.random() * (now - start) + start);
        System.out.println(sdfv.format(time));
//随机16进制颜色
        int red = (int) round(Math.random() * 255);
        int green = (int) round(Math.random() * 255);
        int blue = (int) round(Math.random() * 255);
        String color = String.format("#%02x%02x%02x", red, green, blue);
        System.out.println(color);


        //使用Math类,java lang下所有类系统会自动引
//1. import java.lang.Math,由于在java.lang包下会自动引入
        System.out.println(PI);
//2. 正常使用一个对象需要实例化,Math官方构造方法私有,不允许使用new实例化
//可以直接使用类,调用静态方法(使用)
        System.out.println(round(1.5));
        String str = "ok";
        System.out.println(PI);
        System.out.println(floor(1.5));
        System.out.println(ceil(1.2));
        System.out.println(abs(-6));
        System.out.println(pow(2, 3));
        System.out.println(random());
        System.out.println(max(10, 5));
//        String d;
//        int a = 20;
//        int b = 30;
//        int c = a > b ? a : b;
//        System.out.println(c);
//        Color cc = new Color(0xba, 0x50, 0x71);
//        int red = (int) round(Math.random() * 255);
//        int green = (int) round(Math.random() * 255);
//        int blue = (int) round(Math.random() * 255);
//        String color = String.format("#%02x%02x%02x", red, green, blue);
//        System.out.println(color);


    }

    /**
     * 静态方法,用于生成指定范围的long
     *
     * @param a
     * @param b
     * @return
     */
    public static long nextLong(long a, long b) {
        var rand = new Random();
        return (long) (rand.nextDouble() * (b - a + 1) + a);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java开发,我们经常需要使用各种工具类来简化和优化我们的代码。下面是一些常用的Java工具类: 1. StringUtils: StringUtils是Apache Commons Lang库的一个工具类,提供了许多字符串处理的方法,如判断字符串是否为空、去除空格、截取指定长度等。 2. DateUtils: DateUtils也是Apache Commons Lang库的一个工具类,用于日期和时间的处理。它提供了一些常用的方法,如日期格式化、日期比较、日期计算等。 3. MathUtils: MathUtils是一个自定义的工具类,提供了一些数学运算的方法,如求平均数、求最大最小值、四舍五入等。这些方法可以方便地在我们的代码进行数学计算。 4. FileUtils: FileUtils是Apache Commons IO库的一个工具类,用于处理文件和目录。它提供了一些常用的方法,如复制文件、删除文件、读取文件内容等。 5. CollectionUtils: CollectionUtils是Apache Commons Collections库的一个工具类,用于集合的操作。它提供了一些方便的方法,如判断集合是否为空、合并集合、过滤集合等。 6. HttpClientUtils: HttpClientUtils是Apache HttpClient库的一个工具类,用于发送HTTP请求。它提供了一些方法,如发送GET请求、发送POST请求、设置请求头等。 7. JsonUtils: JsonUtils是一个自定义的工具类,用于处理JSON数据。它提供了一些方法,如将Java对象转换为JSON字符串、将JSON字符串转换为Java对象等。 8. ReflectionUtils: ReflectionUtils是一个自定义的工具类,用于反射操作。它提供了一些方法,如获取的所有字段、调用的方法、创建的实例等。 以上是一些常用的Java工具类,它们可以在我们的开发过程提供便利,帮助我们更高效地编写代码。当然,根据具体的需求,我们还可以自定义一些工具类来满足特定的业务需求。 ### 回答2: 在Java开发工具类是经常用到的,可以提高开发效率和代码重用性。以下是一些常用的Java工具类: 1. String工具类:提供常用的字符串操作方法,如字符串判空、大小写转换、字符串拼接、去除空格等。 2. File工具类:提供文件操作的方法,如文件拷贝、文件删除、文件重命名、文件大小获取等。 3. Date工具类:提供日期操作的方法,如日期格式化、日期比较、日期加减操作等。 4. Collection工具类:提供集合操作的方法,如集合判空、集合拷贝、集合反转等。 5. Math工具类:提供数学计算的方法,如绝对值、最大值、最小值、四舍五入等。 6. Random工具类:提供生成随机数的方法,如生成指定范围的随机整数、生成随机字符串等。 7. JSON工具类:提供JSON数据转换的方法,如JSON对象转字符串、字符串转JSON对象等。 8. JDBC工具类:提供数据库连接和操作的方法,如数据库连接、SQL执行、结果集解析等。 9. XML工具类:提供XML数据解析和生成的方法,如解析XML文件、生成XML文件等。 10. 加密解密工具类:提供常用的加密解密算法,如MD5加密、BASE64编码等。 以上是一些常用的Java工具类,可以根据项目需求和具体场景选择使用。这些工具类可以节省开发时间、提高代码质量,是Java开发必不可少的辅助工具。 ### 回答3: 为了方便开发人员编写Java代码,提高代码的重用性和可维护性,常常会整理收集一些常用的Java工具类。这些工具类涵盖了各种常见的功能,如字符串处理、日期时间操作、文件处理、网络通讯等。 首先,字符串处理是开发常见的需求之一。收集的Java工具类包含了字符串的各种操作方法,比如字符串的截取、拼接、替换、查找等。这些方法可以帮助开发人员更方便地操纵字符串,完成各种需求。 其次,日期时间操作是常用的功能之一。Java工具类包含了日期时间的各种处理方法,如日期格式化、日期比较、日期加减等。这些方法可以帮助开发人员快速处理日期时间相关的需求,提高开发效率。 另外,文件处理也是常见的功能之一。Java工具类包含了文件的各种处理方法,比如读取文件内容、写入文件内容、复制文件、删除文件等。这些方法可以帮助开发人员更方便地对文件进行操作,提供了文件处理的便利性。 最后,网络通讯也是常见的功能之一。Java工具类包含了网络通讯的各种方法,如发送HTTP请求、接收HTTP响应、解析JSON等。这些方法可以帮助开发人员更方便地进行网络通讯操作,实现与服务器交互的功能。 综上所述,整理收集的常用Java工具类涵盖了字符串处理、日期时间操作、文件处理、网络通讯等各种常见的功能。这些工具类可以帮助开发人员更快速、方便地完成开发任务,提高代码的质量和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值