zoukankan      html  css  js  c++  java
  • java的 Arrays类和大数据运算

    1、Arrays类:
    (1)空指针异常:NullPointerException;

    int[] arr=null;和 int[] arr1 = {};不一样    

    arr 是地址为空 ;  arr1 是 数组为空;

    package com.oracle.demo01;
    
    import java.util.Arrays;
    
    public class demo01 {
    
        public static void main(String[] args) {
            int[] arr1 = null;
            int[] arr2 = {};
            System.out.println(arr2.length);     
            System.out.println(arr1.length);      空指针异常
        }
    
    }

    效果如下:


    (2)binarySearch方法:
    传入有序数组和元素,返回所在下标;
    如果元素不在数组中,返回其应在位置的-(负号)下标减一;

    如果数组为空,则返回-1;

    sort方法:
    用来对指定数组中的元素进行排序(元素值从小到大进行排序);

    package com.oracle.demo01;
    
    import java.util.Arrays;
    
    public class demo01 {
    
        public static void main(String[] args) {
            //前提:数组必须是有序的;
            //空数组
            int[] arr = {};
            int index =Arrays.binarySearch(arr, 6);
            System.out.println(index);
            //元素在数组中
            int[] arr1 = {1,2,4,5,6,7};
            int index1 =Arrays.binarySearch(arr1, 6);
            System.out.println(index1);
            //元素不在数组中
            int[] arr2 = {1,2,4,5,6,7};
            int index2 =Arrays.binarySearch(arr2, 3);
            System.out.println(index2);
            int[] arr3 = {5,9,0,1,8,6,4};
            Arrays.sort(arr3);
            for(int i = 0;i < arr3.length;i++){
                System.out.print(arr3[i]+",");
            }
        }
    
    }

    效果如下:


    toString方法:用来返回指定数组元素内容的字符串形式;

    package com.oracle.demo01;
    
    import java.util.Arrays;
    
    public class demo01 {
    
        public static void main(String[] args) { int[] arr3 = {5,9,0,1,8,6,4};
            System.out.println(Arrays.toString(arr3));
        }
    
    }

    效果如下:


    2、大数据运算:
    (1)BigInteger:超过long之后将其封装成BigInteger对象
    对象不能直接进行运算,所以BigInteger对象用
    add、subtract、multiply、divide方法进行运算;

    package com.oracle.demo01;
    
    import java.math.BigInteger;
    
    public class demo02 {
    
        public static void main(String[] args) {
            String str1 = "10000000000000000000000000000";
            String str2 = "20000000000000000000000000000";
            BigInteger  in1 = new BigInteger(str1);
            BigInteger  in2 = new BigInteger(str2);
    //+ System.out.println(in1.add(in2));
    //- System.out.println(in1.subtract(in2));
    //* System.out.println(in1.multiply(in2));
    // / System.out.println(in2.divide(in1)); } }

    效果如下:


    (2)BigDecimal:用来解决浮点型运算出现精度丢失情况;
    对象不能直接进行运算,所以BigDecimal对象用
    add、subtract、multiply、divide方法进行运算;

    package com.oracle.demo01;
    
    import java.math.BigDecimal;
    
    public class demo03 {
    
        public static void main(String[] args) {
            //精度丢失
            System.out.println(0.09+0.01);
            System.out.println(1.0 - 0.32);
            System.out.println(1.015 * 100);
            System.out.println(1.301 / 100);
            //BigDecimal
            BigDecimal  a1 = new BigDecimal("0.09");
            BigDecimal  a2 = new BigDecimal("0.01");
            System.out.println(a1.add(a2));
            BigDecimal  b1 = new BigDecimal("1.0");
            BigDecimal  b2 = new BigDecimal("0.32");
            System.out.println(b1.subtract(b2));
            BigDecimal  c1 = new BigDecimal("1.015");
            BigDecimal  c2 = new BigDecimal("100");
            System.out.println(c1.multiply(c2));
            BigDecimal  d1 = new BigDecimal("1.301");
            BigDecimal  d2 = new BigDecimal("100");
            System.out.println(d1.divide(d2));
        }
    
    }

    效果如下:

    但是可能出现无限不循环小数,因此需要对所需要
    的位数进行保留和选择舍入模式;
    【标度[小数的位数]和舍入模式】

    package com.oracle.demo01;
    
    import java.math.BigDecimal;
    
    public class demo04 {
    
        public static void main(String[] args) {
            BigDecimal  d1 = new BigDecimal("1.301");
            BigDecimal  d2 = new BigDecimal("100");
            System.out.println(d1.divide(d2));
            //标度和舍入模式
            System.out.println(d1.divide(d2, 3, BigDecimal.ROUND_CEILING));
        }
    
    }

    效果如下:这里向上取整

     

  • 相关阅读:
    免费的视频、音频转文本
    Errors are values
    Codebase Refactoring (with help from Go)
    Golang中的坑二
    Cleaner, more elegant, and wrong(msdn blog)
    Cleaner, more elegant, and wrong(翻译)
    Cleaner, more elegant, and harder to recognize(翻译)
    vue控制父子组件渲染顺序
    computed 和 watch 组合使用,监听数据全局数据状态
    webstorm破解方法
  • 原文地址:https://www.cnblogs.com/scw123/p/9728811.html
Copyright © 2011-2022 走看看