JAVA 常用类库总结

更新时间:2020-09-09 09:59:36 点击次数:1203次
java.util.Objects
我们知道 java.lang.Object 是类层次的根,所有类的基类,即所有类都继承自Object。这里我们介绍的是 java.util.Objects 类。
此类包含static实用程序方法,用于操作对象或在操作前检查某些条件。 这些实用程序包括null或null方法,用于计算对象的哈希代码,返回对象的字符串,比较两个对象,以及检查索引或子范围值是否超出范围。

Objects.equals
equals(Object a, Object b) 如果参数相等,返回true;其他则返回false。 因此,如果这两个参数是null , 返回true,如果只有一个参数为null,返回false。如果二者都不为空,通过使用第一个参数的equals方法确定相等性。
观察下面的代码
String s1 = "123";
String s2 = "456";
System.out.println(s1.equals(s2));

这样写当然没有问题,但是考虑传参时,有可能传过来null,即

String s1 = null;
String s2 = "456";
System.out.println(s1.equals(s2));

这样会产生空指针异常,因为一个空的null不能调取方法。如果使用Objects类的方法,就不会产生异常。

String s1 = null;
String s2 = "456";
System.out.println(Objects.equals(p1, p2));

我们来看Objects类equals方法的源码。

    public static boolean equals(Object a, Object b) {
        return (a == b) || (a != null && a.equals(b));
    }

a == b 比较的是两个对象的内存地址,如果内存地址相同,即同一个对象,返回true;(a != null && a.equals(b) 这段代码是先判断a不为空,a不为空后再调用基类Object的equals方法,就不会出现空指针异常了。

Objects.checkFromIndexSize(int fromIndex, int size, int length)
检查是否在子范围从 fromIndex (包括)到 fromIndex + size (不包括)是范围界限内 0 (包括)到 length(不包括)。( java里常用包括上界,不包括下界的区间)源码为
public static
    int checkFromIndexSize(int fromIndex, int size, int length) {
        return Preconditions.checkFromIndexSize(fromIndex, size, length, null);
    }

Objects.isNull(Object obj)
空则返回true,不空返回false。源码为
public static boolean isNull(Object obj) {
       return obj == null;
  }

Objects.nonNull(Object obj)
不空则返回true,空返回false。源码为
    public static boolean nonNull(Object obj) {
        return obj != null;
    }

Objects.requireNonNull(T obj)
如果传参为空,直接抛出异常。当我们需要判断传过来的对象必须不能为空时,可以使用这个方法,调用方法的程序如果不处理异常,程序就会中断。源码为
    public static <T> T requireNonNull(T obj) {
        if (obj == null)
            throw new NullPointerException();
        return obj;
    }

java.lang.Math
类Math包含用于执行基本数字运算的方法,例如基本指数,对数,平方根和三角函数。

public static double abs(int a)
该方法为求绝对值,重载了int,float,double,long等基本数据类型。
public static double min(int a, int b)
该方法返回两数种较小的一个,同样有重载方法。
public static int min(int a, int b)
该方法返回两数种较大的一个,同样有重载方法。
public static long round(double a)
该方法返回四舍五入后的值,1.5结果为2,-1.5四舍五入后为-1。
public static double floor(double a)
返回小于或等于参数且等于数学整数的最大值,1.5结果为1,-1.5结果为-2
public static double ceil(double a)
返回大于或等于参数且等于数学整数的最小值,1.2结果为2,-1.2结果为-1
java.util.Arrays
该类包含用于操作数组的各种方法(例如排序和搜索)。 此类还包含一个静态工厂,允许将数组视为列表。

static int binarySearch(int[] a, int fromIndex, int toIndex, int key)
使用二进制搜索算法搜索指定值的指定数组的范围,有重载。
static int binarySearch(int[] a, int key)
使用二进制搜索算法在指定的int数组中搜索指定的值,有重载。
static int compare(boolean[] a, boolean[] b)
boolean字典顺序比较两个 boolean阵列。
static void sort(Object[] a)
根据元素的natural ordering ,将指定的对象数组按升序排序。
static void sort(Object[] a, int fromIndex, int toIndex)
根据元素的natural ordering ,将指定对象数组的指定范围按升序排序。
static String toString(double[] a)
返回指定数组内容的字符串表示形式。
static int mismatch(double[] a, double[] b)
查找并返回两个 double数组之间第一个不匹配的索引,否则如果未找到不匹配则返回-1。
static boolean equals(int[] a, int[] a2)
如果两个指定的int数组彼此 相等 ,则返回 true 。
static double[] copyOf(double[] original, int newLength)
实现数组的动态扩容,传入原数组和新长度,即可扩容。如下代码块,数组长度已经更改为15。
int arr[] = {1,2,3,4,5};
arr = Arrays.copyOf(arr, 15);
arr[6] = 1;
System.out.println(arr.length);

java.math.BigDecimal
在写一些简单的程序的时候,你是否会有这样的疑问。

System.out.println(0.1+0.2);

输出结果毫无疑问应当是0.3,但是其实是…
在这里插入图片描述
在java中,如果使用double float等基本数据类型进行运算时,运算的结果会失去一些精准。当我们想做一个金融方面的程序时,这样小的误差积累起来会导致结果错误。BigDecimal类可以解决小数误差问题。来看一下这个类的使用方法吧。

public class Demo1 {
    public static void main(String[] args) {
        BigDecimal b1 = new BigDecimal("0.1");
        BigDecimal b2 = new BigDecimal("0.2");
        BigDecimal b3 = b1.add(b2);
        System.out.println(b3);
    }
}

需要注意以下几点

创建对象时传入的时字符串类型
add subtract multiply divide分别表示加减乘除方法,这些方法返回的也是一个BigDecimal对象,参与运算的对象不会发生变化
可以使用 intValue doubleValue 等方法,返回基本数据类型。
java.lang.System
对于这个类我们并不陌生,System类提供的方法包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 加载文件和库的方法; 以及用于快速复制阵列的一部分的实用方法。

static PrintStream err “标准”错误输出流。
static InputStream in “标准”输入流。
static PrintStream out “标准”输出流。
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。
static void gc()
运行垃圾回收器。

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!