Java 数学类

文章目录

  • Math类
  • Random类
  • BigInteger类
  • BigDecima类
  • DecimalFormat类
  • UUID类

Math类


  1. 所属的包 java.lang,所以不需要导包,可以直接用
  2. 构造方法私有,因为提供的属性/方法都是static静态的
  3. 常用的方法
  • abs()返回给定数字的绝对值abs(-1.5);//1.5
  • ====================================
  • ceil()向上取整ceil(1.5);//2
  • floor()向下取整floor(1.5);//1
  • round()四舍五入,返回值是int型 round(1.5);//2
  • rint()返回最接近参数的值,返回值是float型 ,注意rint(1.5);//2 都一样近时,取偶数
  • ============================================================
  • max(a,b)返回最大值
  • min(a,b)返回最小值
  • ================
  • pow(a,b)两个参数都是float型,返回a的b次方
  • sqrt(a) 返回正确舍入的 double 值的正平方根
  • ================================
  • random() 随机返回 [0.0,1.0)这个区间的值

随机返回[1.10)区间的整数,这个好写 int value = (int)(Math.random()*10)

但是假如要随机返回 [5.0,10.9]之间的小数 ,也可以这样写float value = Math.random()*6 +5,但是这样很勉强,精确程度会有损失,也可能返回1.99,1.999,1.9965之类的小数

Random类


  1. java.util包中的类,需要import导入
  2. 没有任何继承关系,默认继承Object
  3. 只有一个接口Serializable
  4. 提供的常用方法:
  • nextInt()随机产生int取值范围的整数,有正有负
  • nextInt(a)随机产生 [0,a) 范围之间的整数 //这个方法不能传负数,否则会出现IllegalArgumentException异常
  • nextFloat()随机产生[0.0,1.0)范围之间的小数
  • nextBoolean()随机产生 true 或者 false

BigInteger类


这个类用来存储特别大的整数(超出long的范围)

  1. 所属的包java.math
  2. 继承自Number
  3. 我们一般用它提供的这个构造方法`BigInteger(String val)
  4. 类中常用方法:做四则运算的
import java.math.BigInteger;

public class Demo {

    public static void main(String[] args){
        BigInteger bigInteger1 = new BigInteger("123");
        BigInteger bigInteger2 = new BigInteger("789");

        System.out.println(bigInteger1.add(bigInteger2));        //加
        System.out.println(bigInteger1.subtract(bigInteger2));   //减
        System.out.println(bigInteger1.multiply(bigInteger2));   //乘
        System.out.println(bigInteger1.divide(bigInteger2));    //除

    }

}

设计一个方法,用来计算给定数字的阶乘(运用BigInteger类)

import java.math.BigInteger;

public class Demo {

    public BigInteger factorial(int num){
        BigInteger result = new BigInteger("1");
        for(int i = 1; i <= num; i++){
            result = result.multiply(new BigInteger(i + ""));
        }
        return result;
    }

    public static void main(String[] args){
        Demo demo = new Demo();
        System.out.println(demo.factorial(50));
    }

}

在这里插入图片描述

BigDecima类


用来存储 超出了double取值范围的小数

  1. 所属的包java.math
  2. 继承自Number
  3. 通常也是使用带String参数的,或者带int参数的,或者带double参数的构造方法,来构造对象
  4. 类中常用方法:做四则运算的add(),subtract(),multipy(),divide()
  5. 还有一个方法,处理小数点后的位数setScale(),返回值是BigDecimal类型的,有两个参数(保留小数点后几位,设置的模式)

DecimalFormat类


将小数点之前和小数点之后的位数都能处理的类 —>格式化

  1. 所属的包java.text
  2. 通过带String参数的构造方法创建一个格式化对象 ,用0或者#来控制
  3. 通过format()方法将一个小数格式化成一个字符串
import java.text.DecimalFormat;


public class Demo {

    public static void main(String[] args){
        DecimalFormat df = new DecimalFormat("000.###"); //参数是String类型的格式
                                                          //0表示必须存在,#表示可有可无
        System.out.println(df.format(123.456));
        System.out.println(df.format(123.456789));//小数点后的如果多了,就按四舍五入来记
        System.out.println(df.format(123.4));

        System.out.println("===============");

        DecimalFormat df1 = new DecimalFormat("000.000"); 

        System.out.println(df1.format(123.456));
        System.out.println(df1.format(123.456789));//小数点后的如果多了,就按四舍五入来记
        System.out.println(df1.format(123.4));   //0表示的必须得有,补0

    }

}

UUID类


这个类在数据库中可能使用较多

  1. 所属的包java.util,需要import导入
  2. 没有任何继承关系,默认继承Object
  3. 有构造方法,但没有无参数的构造方法,我们通常不用
  4. 一般用里面的一个静态方法
import java.util.UUID;

public class Demo {

    public static void main(String[] args){

        UUID uuid = UUID.randomUUID();  
        //这个方法随机产生一个32位的16进制的元素
        System.out.println(uuid.toString());//结果是32位的16进制数
    }

}

在这里插入图片描述
我们一般拿这个随机产生的32位的16进制数,充当数据库表格的主键 primary key

你可能感兴趣的:(Java)