Java核心类库之——Objects类;是小白就点进来吧

Objects类

Objects类是一个方法类,方里面包含很多的静态方法可以被我们直接调用。

方法类整理:

Objects类有很多方法,以下只是选了常用几个进行分析。


equals方法

equals是比较两个参数是否相等,相等返回true,不相等返回false;

直接调用equals与Objects里的equals之间的区别:

int a = null;
int b = 10;
System.out.println(a.euqals(b));
System.out.println(Objects.equals(a,b));

在上面代码里,因为空指针无法调用方法,由于a为null,所以第三行会报错。但是调用Objects则不会。

原因在于Objects中equals方法实现如下:

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

当a==b时直接返回true;

当a为null时返回false;

最后a不为null时才会进入a.equals(b)比较两者是否相等。


isNull/nonNull

判断变量是否为null;返回值为true或者flase;

int a = null;
System.out.println(Objects.isNull(a));
System.out.println(Objects.nonNull(a));

requireNonNull

判断变量是否为Null,是抛出异常,不是则返回该变量。

一般是用在需要传入一个非null变量的时候,使用requireNonNull,当传入null时抛出异常,如果不处理程序就会中断;传入非null则直接通过。

requireNonNull方法实现如下:

public static <T> T requireNonNull(T obj){
    
    
    if(obj == null)
        //抛出空指针异常
        throw new NullPointerException();
    return obj;
}

Objects类一览:

static int checkFromIndexSize(int fromIndex, int size, int length) 检查是否在子范围从 fromIndex (包括)到 fromIndex + size (不包括)是范围界限内 0 (包括)到 length (不包括)。
static int checkFromToIndex(int fromIndex, int toIndex, int length) 检查是否在子范围从 fromIndex (包括)到 toIndex (不包括)是范围界限内 0 (包括)到 length (不包括)。
static int checkIndex(int index, int length) 检查 index是否在 0 (含)到 length (不包括)范围内。
static <T> int compare(T a, T b, Comparator<? super T> c) 如果参数相同则返回0,否则返回 c.compare(a, b)
static boolean deepEquals(Object a, Object b) 返回 true如果参数是深层相等,彼此 false其他。
static boolean equals(Object a, Object b) 返回 true如果参数相等,彼此 false其他。
static int hash(Object... values) 为一系列输入值生成哈希码。
static int hashCode(Object o) 返回非的哈希码 null参数,0为 null的论点。
static boolean isNull(Object obj) 返回 true如果提供的参考是 null ,否则返回 false
static boolean nonNull(Object obj) 返回 true如果提供的参考是非 null否则返回 false
static <T> T requireNonNull(T obj) 检查指定的对象引用是否不是 null
static <T> T requireNonNull(T obj, String message) 检查指定的对象引用是否为null ,如果是,则抛出自定义的NullPointerException
static <T> T requireNonNull(T obj, Supplier<String> messageSupplier) 检查指定的对象引用是否为null ,如果是,则抛出自定义的NullPointerException
static <T> T requireNonNullElse(T obj, T defaultObj) 如果它是非 null ,则返回第一个参数,否则返回非 null第二个参数。
static <T> T requireNonNullElseGet(T obj, Supplier<? extends T> supplier) 如果它是非 null ,则返回第一个参数,否则返回非 nullsupplier.get()
static String toString(Object o) 返回调用的结果 toString对于非 null参数, "null"null的说法。
static String toString(Object o, String nullDefault) 如果第一个参数不是 null ,则返回在第一个参数上调用 toString的结果,否则返回第二个参数。

おすすめ

転載: blog.csdn.net/m0_58702068/article/details/120525183