BigInteger 类、BigDecimal 类、Arrays类、System类和Math类方法合集。

发布时间:2023-11-06 17:00

CSDN话题挑战赛第1期
活动详情地址:话题团队PK赛5/9-5/22-CSDN\"icon-default.png?t=M4AD\"https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f
参赛话题:Java学习记录
话题描述:每个人学习的路线不同,学习的方式视频教学和跟的老师不同,一个知识点会多种不同的讲解之法,下面这篇文章记录了我的学习记录并且我不懂或漏掉的知识点又去找其他书籍进行了补充,我觉得依旧不是最完整的,等我遇到了还会对这部分知识点进行补充。


目录

一、前言​​​​​​​

二、Math 类

三、Arrays 类 

1、常见方法

2、补充  

2、还原sort方法的底层源码 

 四、System 类

 五、BigInteger 和 BigDecimal 类 

1、基本介绍

2、代码示例


一、前言

  • 学习概述:学习Math类、Arrays类、System类、BigInteger 类和 BigDecimal 类的一些常用方法。
  • 学习目标:必须熟练掌握BigInteger 类、BigDecimal 类、Arrays类、System类和Math类的常用方法,其他方法了解即可。

二、Math 类

方法 功能描述
static long abs (double a) 返回a的绝对值
static double max (double a,double b) 返回a、b的最大值
static double min (double a,double b) 返回a、b的最小值
static double pow (double a,double b) 返回a的b次幂
static double sgrt (double a) 返回a的平方根
static double log (double a) 返回a的对数
static double sin (double a) 返回a的正弦值
static double asin (double a) 返回a的反正弦值
static double random() 产生一个大于等于0且小于1的随机浮点数
double ceil(double d)
double ceil(float f)
对一个数进行上舍入,返回值大于或等于给定的参数,类型为双精度浮点型。
double floor(double d)
double floor(float f)
对一个数进行下舍入,返回给定参数最大的整数,该整数小于或等给定的参数。
long round(double d)
int round(float f)
返回一个最接近的 int、long 型值,四舍五入。

三、Arrays 类 

1、常见方法

方法 功能描述
public static int binarySearch(Object[] a, Object key) 用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。
public static void sort(Object[] a) 对指定对象数组根据其元素的自然顺序进行升序排列。
public static boolean equals(long[] a, long[] a2) 比较两个数组元素内容是否完全 一致
public static void fill(int[] a, int val) 将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。即数组元素填充。
public static T[ ] copyOf(T[ ] original,int newLength) 用于复制指定数组内容以达到扩容的目的
public static String[ ] toString(String[ ] str) 返回数组的字符串形式

2、补充  

asList 方法:

        asList 方法会将一组数值转换成一个List集合

asList 的运行类型是 :

        Java.util.Arrays#ArraysList ,属于Arrays类


代码示例:

List asList = Arrays.asList(1,2,3,4,5);

2、还原sort方法的底层源码 

package String_.custom_made;

import java.util.Arrays;
import java.util.Comparator;


public class custom_ {
    public static void main(String[] args) {

        int[] arr = {1, -1, 8, 0, 20};

        System.out.println(\"=====从小到大============\");
        //调用方法时需要传入两个参数:
        //(1) 需要排序的数组 arr 
        //(2) 实现了 Comparator 接口的匿名内部类 
        cus.f1(arr, new Comparator() {
            @Override
            //要求实现 compare 方法
            public int compare(Object o1, Object o2) {
                int i1 = (Integer) o1;
                int i2 = (Integer) o2;

                //通过控制返回的值>0 还是 <0 来影响整个排序结果,
                return i1 - i2;
            }
        });

        System.out.println(Arrays.toString(arr));


    }
}
class cus{
    //结合冒泡 + 定制
    public static void f1(int[] arr, Comparator c){

        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {

            for (int j = 0; j < arr.length - i - 1; j++) {

                //在匿名内部类中实现 compare 方法
                //数组排序由 c.compare(arr[j], arr[j + 1])返回的值决定
                if(c.compare(arr[j],arr[j + 1]) > 0){
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }

            }
        }
    }
}

注意:因为数组是引用类型,所以通过 sort 排序后,会直接影响到 实参 arr (原数组)


 四、System 类

方法 功能描述
public static long currentTimeMillis() 返回当前时间距离1970年1月1日凌晨的毫秒数。
public static long nanoTime() 以纳秒为单位返回正在运行的Java虚拟机的高分辨率时间源的当前值(常用于做种子数)。
public static void exit(int status) 终止当前运行的Java虚拟机(状态值为0,代表正常结束程序)。
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

复制数组元素,比较适合底层调用。

public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :

src :源数组

srcPos 从源数组的哪个索引位置开始拷贝

dest : 目标数组,即把源数组的数据拷贝到哪个数组

destPos: 把源数组的数据拷贝到 目标数组的哪个索引

length: 从源数组拷贝多少个数据到目标数组


五、BigInteger 和 BigDecimal 类 

1、基本介绍

        BigInteger : 适合保存很大的整型数据。

        BigDecimal :适合保存精度很高的浮点型。

        

        注意 :由于这两个数据类型的数据特别大,不能像基本数据类型那样直接进行运算,所以我们必须使用规定的方法进行加减乘除。

        常见方法:

                        ▷ add() :        加法运算

                        ▷ subtract() : 减法运算

                        ▷ multiply() :  乘法运算

                        ▷ divide() :     除法运算


2、代码示例

▶ add()

BigInteger big1 = new BigInteger(\"22222222222222222222222222222\");
BigInteger big2 = new BigInteger(\"11111111111111111111111111111\");

BigInteger add01 = big1.add(big2);

▶ subtract()

BigInteger big1 = new BigInteger(\"22222222222222222222222222222\");
BigInteger big2 = new BigInteger(\"11111111111111111111111111111\");

BigInteger sub01 = big1.subtract(big2);

▶ multiply()

BigInteger big1 = new BigInteger(\"22222222222222222222222222222\");
BigInteger big2 = new BigInteger(\"11111111111111111111111111111\");

BigInteger mul01 = big1.multiply(big2);

▶ divide()

BigInteger big1 = new BigInteger(\"22222222222222222222222222222\");
BigInteger big2 = new BigInteger(\"11111111111111111111111111111\");

BigInteger div01 = big1.divide(big2);

注意 :

        BigDecimal 类的方法及用法与BigInteger 类一样,但 BigDecimal 类使用divide() 方法时,可能抛出异常 ArithmeticException,指定精度即可. BigDecimal.ROUND_CEILING(解决办法),如果有无限循环小数,就会保留 分子 的精度。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号