0056 Math、Arrays、System、BigInteger和BigDecimal类

 

 

 

 

 

/*
    Math类
    包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数

    常见方法(静态方法)
    abs             //绝对值
    pow             //求幂
    ceil            //向上取整
    floor           //向下取整
    round           //四舍五入
    sqrt            //求开方
    random          //求随机数  返回0-1之间的一个随机小数 [0,1)
    max             //求两个数最大值
    min             //求两个数最小值
 */
public class Math_ {
    public static void main(String[] args) {
        //1.abs 绝对值
        int abs = Math.abs(-9);
        System.out.println(abs);//9

        //2.pow 求幂
        double pow = Math.pow(2, 4);//2 的 4 次方
        System.out.println(pow);//16.0

        //3.ceil 向上取整,返回>=该参数的最小整数
        double ceil = Math.ceil(-3.6);
        System.out.println(ceil);//-3.0

        //4.floor 向下取整,返回<=该参数的最大整数
        double floor = Math.floor(4.001);
        System.out.println(floor);//4.0

        // 5.round 四舍五入
        long round = Math.round(5.51);
        System.out.println(round);//6

        // 6.sqrt 求开方
        double sqrt = Math.sqrt(9.0);
        System.out.println(sqrt);//3.0

        //7.random 求随机数
        System.out.println(Math.random());//[0,1)之间的小数
        //获取[a,b]之间的随机整数
        //(int)(Math.random() * (b-a)) 返回 [0,b-a)
        //(int)(Math.random() * (b-a+1)) 返回 [0,b-a]
        //(int)(a + Math.random() * (b-a+1)) 返回 [a,a+b-a]即[a,b]

        //如a=2,b=7
        //2 + Math.random()*6 返回[2,8)的小数
        //(int)2 + Math.random()*6 返回 [2,7]
        System.out.println((int)2 + Math.random()*6);

        //max , min 返回最大值和最小值
        int min = Math.min(1, 9);
        int max = Math.max(45, 99);
        System.out.println("min=" + min);//1
        System.out.println("max=" + max);//99

    }
}
/*
    Arrays类
    Arrays包含了一系列静态方法,用于管理或操作数组(如排序和搜索)

    1.toString               //返回数组的字符串形式
    2.sort                   //排序
    3.binarySearch           //通过二分法搜索进行查找,要求必须排好序
    4.copyOf                 //数组元素的复制
    5.fill                   //数组元素的填充
    6.equals                 //比较两个数组元素内容是否一致
    7.asList                 //将一组的值,转换成list
 */
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class Arrays_ {
    public static void main(String[] args) {
        Integer[] integers = {11,22,33,44};
        //toString 显示数组
        System.out.println(Arrays.toString(integers));
        //sort
        Integer[] arr = {1,-1,3,5,6,-3,7};
        Arrays.sort(arr);//因为数组是引用类型,所以排序后会直接影响到实参arr
        System.out.println(Arrays.toString(arr));//[-3, -1, 1, 3, 5, 6, 7]
        //sort也可通过传入一个接口Comparator实现定制排序,体现 接口编程+动态绑定+匿名内部类
        Arrays.sort(arr, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                Integer i1 = (Integer) o1;
                Integer i2 = (Integer) o2;
                return i2 - i1;
            }
        });
        System.out.println(Arrays.toString(arr));//[7, 6, 5, 3, 1, -1, -3]

        //binarySearch,如果不存在,return -(low + 1)
        Integer[] arr2 = {0,1,2,3,4,8,9,10};
        int index = Arrays.binarySearch(arr2,8);
        System.out.println(index);//5

        //copyOf  拷贝长度<0,抛出异常
        Integer[] newArr = Arrays.copyOf(arr2,arr2.length);//从arr2中,拷贝arr2.length个元素到newArr
        System.out.println(Arrays.toString(newArr));//[0, 1, 2, 3, 4, 8, 9, 10]

        //fill
        Integer[] num = new Integer[]{1,2,3,4};
        Arrays.fill(num,5);//用5填充所有元素
        System.out.println(Arrays.toString(num));//[5, 5, 5, 5]

        //equals
        System.out.println(Arrays.equals(arr,arr2));//false

        //asList 将()转成一个List集合
        List asList = Arrays.asList(1,2,3,4,5);
        System.out.println(asList);//[1, 2, 3, 4, 5]
        System.out.println(asList.getClass());//运行类型java.util.Arrays$ArrayList,是Arrays类的静态内部类
    }
}
/*
    System类常见方法
    1.exit                  //退出当前程序
    2.arraycopy             //复制数组元素,适合底层调用,一般使用Arrays.copyOf
    3.currentTimeMillis     //返回当前时间距离1970-1-1的毫秒数
    4.gc                    //运行垃圾回收机制

    大数处理
    1.BigInteger            //适合保存比较大的整型
    2.BigDecimal            //适合保存精度更高的浮点型(小数)

 */
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
public class System_ {
    public static void main(String[] args) {
        //exit
        System.out.println("开始执行");
       // System.exit(0);//0表示一个状态 , 正常的状态
        System.out.println("继续执行程序...");

        //arraycopy
        int[] arr1 = {1,2,3};
        int[] arr2 = new int[4];
        System.arraycopy(arr1, 0, arr2, 1, arr1.length);
        //源数组 arr1, 从索引0开始拷贝,拷贝到arr2,从索引1开始,拷贝arr.length个
        System.out.println(Arrays.toString(arr2));//[0, 1, 2, 3]

        //currentTimeMillis
        System.out.println(System.currentTimeMillis());

        //BigInteger
        BigInteger bigInteger1 = new BigInteger("999999999999999999999999");
        System.out.println(bigInteger1);
        //进行加减乘除时要使用对应方法,不能直接+,-,*,/
        BigInteger bigInteger2 = new BigInteger("2");

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

        //BigDecimal
        BigDecimal bigDecimal1 = new BigDecimal("1.9999999999999999999999999999");
        System.out.println(bigDecimal1);
        进行加减乘除时要使用对应方法,不能直接+,-,*,/
        BigDecimal bigDecimal2 = new BigDecimal("6.6");

        System.out.println(bigDecimal1.add(bigDecimal2));//加
        System.out.println(bigDecimal1.subtract(bigDecimal2));//减
        System.out.println(bigDecimal1.multiply(bigDecimal2));//乘
       // System.out.println(bigDecimal1.divide(bigDecimal2));//除,可能抛出异常(无限循环小数)
        //解决异常:在调用divide方法时,指定精度
        System.out.println(bigDecimal1.divide(bigDecimal2,BigDecimal.ROUND_CEILING));//保留到被除数精度

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

nzmzmc

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

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

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

打赏作者

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

抵扣说明:

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

余额充值