java-常用类之Math&Random

1. Math&Random

1.1. Math

java.lang.Math是jdk中提供的一个用于数学类相关运算的类,内部的所有方法全部都是static方法,Math内部将默认构造器私有化,因此无法直接实例化;

Math内部只提供了常量以及静态方法:

  • 常量

    /**
    *自然对数的基数
    */
    public static final double E = 2.7182818284590452354;
    
    /**
     * 圆周率
    */
    public static final double PI = 3.14159265358979323846;
    
  • 常见静态方法

    //获取绝对值
    System.out.println(Math.abs(-100));
    //向上取整(double值)
    System.out.println(Math.ceil(105.0/10));
    //向下取整(double)
    System.out.println(Math.floor(109.0/10));
    //获取两个数值的最大值
    System.out.println(Math.max(10, 100));
    //获取两数的最小值
    System.out.println(Math.min(10, 100));
    //计算两数相乘
    System.out.println(Math.multiplyExact(10,10));
    //计算两数相减
    System.out.println(Math.subtractExact(100, 10));
    //计算两数相加
    System.out.println(Math.addExact(100, 10));
    //获取一个数值的指定次幂
    System.out.println(Math.pow(2,4));
    //获取从0.0~1.0之间随机数
    System.out.println(Math.random());
    //四舍五入(返回值是整数)
    System.out.println(Math.round(3.54));
    

1.2. Random

通过观察Math.random()方法的实现,发现该方法借助于java.util.Random类实现的随机数获取,Random类提供了对于各种数据类型的随机值的获取方法:

  • nextBoolean()
  • nextInt()
  • nextDouble()
  • nextLong()
Random r = new Random();
//获取随机boolean值
System.out.println(r.nextBoolean());

System.out.println(r.nextDouble());

System.out.println(r.nextInt());
System.out.println(r.nextLong());
//随机获取0~9整数
for (int i = 0; i < 100; i++) {
    System.out.println(r.nextInt(10));
}

1.3. 随机数案例-验证码生成器

public class VerifyCodeGen {

    //ctrl+shift+u 大小转换快捷键
    private static final String base="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    private static Random random = new Random();

    /**
     * 生成一个指定长度的验证码
     * @param len
     * @return
     */
    public static String genCode(int len){
        char[] codes = new char[len];
        for (int i = 0; i < len; i++) {
            // 随机索引
            int index = random.nextInt(base.length());
            //获取指定位置的字符
            char c = base.charAt(index);
            //将字符存储到数组中
            codes[i] = c;
        }
        //将字符数组转换为String对象
        return new String(codes);
    }

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println(genCode(8));
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值