zoukankan      html  css  js  c++  java
  • Java学习笔记26(Math类、Arrays类、BigInteger类、BigDecimal类)

    Math类:数学工具类,做一些数学计算,开方,对数,三角函数等

    所有方法都是静态方法,不需要建立对象,直接用类名调用即可

    示例:

    这里写几个在日常开发中会用到的,比如三角函数之类的平时不会用到,了解即可

    package demo;
    
    public class MathDemo {
        public static void main(String[] args) {
            function1();
            function2();
            function3();
            function4();
            function5();
        }
    
        public static void function1() {
            int i = Math.abs(-9);
            System.out.println(i);
            // 输出:9,求绝对值
        }
    
        public static void function2() {
            double d1 = Math.floor(6.5);
            double d2 = Math.ceil(6.5);
            System.out.println(d1);// 6.0
            System.out.println(d2);// 7.0
        }
    
        public static void function3() {
            double d1 = Math.pow(2.0, 3.0);
            System.out.println(d1);
            // 2的3次方,输出:8.0
            double d2 = Math.sqrt(4.0);
            System.out.println(d2);
            // 4开发,输出2.0
        }
    
        public static void function4() {
            for (int i = 0; i < 10; i++) {
                double d = Math.random();
                System.out.println(d);
                //打印随机数,介于0到1
            }
        }
    
        public static void function5() {
            double d = Math.round(1.4234);
            System.out.println(d);
            //输出1.0,得到四舍五入值
        }
    }

    Arrays类:数组工具类,帮助我们对数组进行一些操作:

    有些方法可以在日常开发中为我们节省很多代码

    示例:

    package demo;
    
    import java.util.Arrays;
    
    public class ArraysDemo {
        public static void main(String[] args) {
            function1();
            function2();
            function3();
        }
        
        public static void function1(){
            //对数组升序排列,这里用了比冒泡排序性能高很多的快排
            int[] arr = {5,4,8,7,3,1,6};
            Arrays.sort(arr);
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
            //升序打印
        }
        
        public static void function2(){
            //数组的二分查找法,我的第6篇文章有原理介绍,与这里的原理大致上相同
            int[] arr = {11,4,5,7,9,13,1};
            //二分法前提是有序数组
            Arrays.sort(arr);
            int index = Arrays.binarySearch(arr, 7);
            System.out.println(index);//排序后7的所有是3
            //这里需要注意:如果这个元素在数组中不存在
            //那么返回一个负数:(-插入点-1)
        }
        
        public static void function3(){
            int[] arr = {1,2,3,4,5};
            String string = Arrays.toString(arr);
            System.out.println(string);
            //输出:[1, 2, 3, 4, 5]    字符串
            //原理在我的前几篇文章中写过
        }
    }

    有时候数组超过long型的大小,需要计算,怎么办?

    BigInteger类:大数运算

    示例:

    package demo;
    
    import java.math.BigInteger;
    
    public class BigIntegerDemo {
        public static void main(String[] args) {
            function();
        }
    
        public static void function() {
            BigInteger b1 = new BigInteger("6666666666666666666666666666666");
            BigInteger b2 = new BigInteger("1234567891234567891234567891231123123");
            BigInteger b3 = b1.add(b2);// b1+b2
            System.out.println(b3);// 1234574557901234557901234557897789789
            BigInteger b4 = b1.subtract(b2);// b1-b2
            System.out.println(b4);// -1234561224567901224567901224564456457
            BigInteger b5 = b1.multiply(b2);// b1*b2
            System.out.println(b5);// 很长一个数,这里不再复制
            BigInteger b6 = b2.divide(b1);// b2/b1
            System.out.println(b6);// 185185
    
        }
    }

    BigDecimal类:浮点大数运行,提高浮点数运算精度

    示例:

    package demo;
    
    import java.math.BigDecimal;
    
    public class BigDecimalDemo {
        public static void main(String[] args) {
            System.out.println(0.09+0.01);//输出0.99999
            System.out.println(1.0-0.32);//输出0.67999
            //发现这里会出现不合适的结果
            //原因:计算机二进制中,表示浮点数不精确造成的
            //解决方法:BigDecimal类
            function1();
            function2();
        }
        public static void function1(){
            BigDecimal b1 = new BigDecimal("0.09");
            BigDecimal b2 = new BigDecimal("0.01");
            BigDecimal b3 = b1.add(b2);//b1+b2
            System.out.println(b3);//得到0.10,正确
            
            BigDecimal b4 = new BigDecimal("1.0");
            BigDecimal b5 = new BigDecimal("0.32");
            BigDecimal b6 = b4.subtract(b5);//b4-b5
            System.out.println(b6);//0.68,正确
            
            BigDecimal b7 = b1.multiply(b2);//b1*b2
            System.out.println(b7);//0.0009,正确
        }
        public static void function2(){
            //除法方面有一些区别,需要注意下
            BigDecimal b1 = new BigDecimal("1.301");
            BigDecimal b2 = new BigDecimal("101");
            //BigDecimal b3 = b1.divide(b2);//如果不整除这里会出现异常
            BigDecimal b3 = b1.divide(b2,2,BigDecimal.ROUND_HALF_UP);
            //第二个参数是保留两位小数的意思
            //第三个参数是保留模式:最接近的数字舍入(即为四舍五入保留模式),还有很多其他模式
            System.out.println(b3);//保留两位,得到0.02的结果
        }
        
    }
  • 相关阅读:
    FATAL ERROR: please install the following Perl modules before executing /usr/bin/mysql_install_db:
    redis分布式锁原理与实现
    java中如何将 string 转化成 long
    FastJson中JSONObject用法及常用方法总结
    Spring IOC 一——容器装配Bean的简单使用
    静态代理和动态代理
    Spring AOP——Spring 中面向切面编程
    什么是分布式锁?实现分布式锁的三种方式
    @Consumes @Produces的作用
    pro、pre、test、dev环境
  • 原文地址:https://www.cnblogs.com/xuyiqing/p/8271282.html
Copyright © 2011-2022 走看看