您的位置 首页 java

Java,Objects,常用操作,判空、equals、compare、hash等的使用

Object&Objects

Object是Java中所有类的基类,位于java.lang包。Objects是Object的工具类,位于java.util包,Jdk1.7开始才出现,被final修饰不能被继承,拥有私有的构造函数。由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。

常用方法说明

public static <T> T requireNonNull(T obj), 判断一个对象是不是null,如果不是null则返回对象本身,如果是null则抛出空指针异常。

public static <T> T requireNonNull(T obj,String message), 判断一个对象是不是null,如果不是null则返回对象本身,如果是null则抛出空指针异常,并把第二个参数message写在异常信息中。

public static boolean equals(Object a, Object b), 比较对象a和对象b,使用的是第一个参数的equals()方法,如果两个参数中有一个是null,则返回false,如果两个参数都是null,则返回true。

public static boolean deepEquals(Object a, Object b), 比较对象a和对象b是否深度相等,使用的其实是Arrays.deepEquals()方法,只有a和b对应位置的元素都相等时,才返回true,a好b都是null也返回true,否则返回false。

public static <T> int compare(T a, T b, Comparator<? super T> c), 比较对象a和对象b,如果a和b是相等的,返回0,如果不相等,调用c的compare方法。如果a或者b是null的情况下,调用c的compare方法时有可能报空指针异常,看c的compare方法怎么写了。

public static int hash(Object… values), 得到一列对象的hash code,使用的其实是Arrays.hashCode(Object[]),Object[]数组元素就是hash方法传入的参数值。

public static int hashCode(Object o),得到一个对象的hash code,如果参数为null,返回0

public static String toString(Object o), 调用对象的toString()方法,如果参数是null,返回字符串”null”。

public static String toString(Object o, String nullDefault), 调用对象的toString()方法,如果参数是null,返回第二个参数表示的字符串。

代码示例

 import java.util.Comparator;
import java.util.Objects;

public class JavaUtilsObjectsTest {

    public static void main(String[] args) {
        // ======================================================================//
        // ===== 判空、requireNonNull
        // ======================================================================//
        Object result1 = Objects.requireNonNull(1);
        System.out.println("requireNonNull = " + result1); // 1
        try {
            Object result2 = Objects.requireNonNull(null, "空指针");
            System.out.println(result2); // 1
        } catch (Exception e) {
            System.out.println("错误消息 = " + e.getMessage());  // 空指针
        }
        System.out.println(Objects.isNull(null)); // true
        System.out.println(Objects.isNull(""));  // false

        Integer compareResult = Objects.compare(new String("a"),new String("a"), new Comparator<String>(){

            @Override
            public int compare(String o1, String o2) {
                if(o1.equals(o2)){
                    return 1;
                }
                return -1;
            }
        });
        System.out.println(compareResult);
        // ======================================================================//
        // ====== 等于、equals
        // ======================================================================//
        Object object = new Object();
        System.out.print("> Objects.equals(object, object) = ");
        System.out.println(Objects.equals(object, object)); // true
        System.out.print("> Objects.equals(object, new Object()) = ");
        System.out.println(Objects.equals(object, new Object())); // false
        System.out.print("> Objects.equals(null, null) = ");
        System.out.println(Objects.equals(null, null)); // true
        System.out.print("> Objects.equals(\"\", null) = ");
        System.out.println(Objects.equals("", null));  // false
        System.out.print("> Objects.equals(1, new Integer(1) = ");
        System.out.println(Objects.equals(1, new Integer(1))); // true
        System.out.print("> Objects.equals(1, new Long(1) = ");
        System.out.println(Objects.equals(1, new Long(1))); // false
        System.out.print("> Objects.equals((long)1, new Long(1)) = ");
        System.out.println(Objects.equals((long) 1, new Long(1))); // true
        System.out.print("> Objects.deepEquals(1,1) = ");
        System.out.println(Objects.deepEquals(1, 1)); // true
        System.out.print("> Objects.deepEquals(1,1L) = ");
        System.out.println(Objects.deepEquals(1, 1L)); // false
    }

}
  

文章来源:智云一二三科技

文章标题:Java,Objects,常用操作,判空、equals、compare、hash等的使用

文章地址:https://www.zhihuclub.com/186496.shtml

关于作者: 智云科技

热门文章

网站地图