JDK7新增Objects方法介紹(同時包含JDK8新添加的方法)
阿新 • • 發佈:2018-11-20
整數 inter 新增 int pub and arrays 內存 字符串表
前言
JDK7裏面新增的Objects類,該類的主要用途是將操作對象的一切常用操作進行的封裝。包括hashCode、equals等。
本文是以java8版本介紹Objects類,所以也會介紹一下java8新增的方法。
Objects類簡介
/** * This class consists of {@code static} utility methods for operating * on objects. These utilities include {@code null}-safe or {@code * null}-tolerant methods for computing the hash code of an object, * returning a string for an object, and comparing two objects. * * @since 1.7 */ 本類由一些操作對象的靜態工具方法構成,這些工具方法包括了非空檢查、方法的非空參數檢查、 比較對象的hashCode、為對象返回一個字符串表示、比較兩個對象 從1.7開始添加該類
Objects特點
1.該類是使用final修飾,不能被繼承
2.該類的構造方法被私有化(使用private修飾),不能直接創建對象
3.該類中所有的方法都是靜態方法,可以使用類型直接調用(對應2,該類不需要創建對象)
Objects內方法介紹
//比較兩個對象是否相等(首先比較內存地址,然後比較a.equals(b),只要符合其中之一返回true) public static boolean equals(Object a, Object b); //深度比較兩個對象是否相等(首先比較內存地址,相同返回true;如果傳入的是數組,則比較數組內的對應下標值是否相同) public static boolean deepEquals(Object a, Object b); //返回對象的hashCode,若傳入的為null,返回0 public static int hashCode(Object o); //返回傳入可變參數的所有值的hashCode的總和(這裏說總和有點牽強,具體參考Arrays.hashCode()方法) public static int hash(Object... values); //返回對象的String表示,若傳入null,返回null字符串 public static String toString(Object o) //返回對象的String表示,若傳入null,返回默認值nullDefault public static String toString(Object o, String nullDefault) //使用指定的比較器c 比較參數a和參數b的大小(相等返回0,a大於b返回整數,a小於b返回負數) public static <T> int compare(T a, T b, Comparator<? super T> c) //如果傳入的obj為null拋出NullPointerException,否者返回obj public static <T> T requireNonNull(T obj) //如果傳入的obj為null拋出NullPointerException並可以指定錯誤信息message,否者返回obj public static <T> T requireNonNull(T obj, String message) -----------------------------以下是jdk8新增方法--------------------------- //判斷傳入的obj是否為null,是返回true,否者返回false public static boolean isNull(Object obj) //判斷傳入的obj是否不為null,不為空返回true,為空返回false (和isNull()方法相反) public static boolean nonNull(Object obj) //如果傳入的obj為null拋出NullPointerException並且使用參數messageSupplier指定錯誤信息,否者返回obj public static <T> T requireNonNull(T obj, Supplier<String> messageSupplier)
案例
//equals String str1 = "hello"; String str2 = "world"; int i1 = 1; int i2 = 2; int[] arr1 = {1,2}; int[] arr2 = {1,2}; //傳入對象 System.out.println(Objects.equals(str1, str2));//false //傳入數組 System.out.println(Objects.equals(i1, i2));//false //deepEquals //傳入對象 System.out.println(Objects.equals(str1, str2));//false //傳入數組 System.out.println(Objects.deepEquals(arr1, arr2));//true //hashCode //傳入對象 System.out.println(Objects.hashCode(str1));//99162322 //傳入null System.out.println(Objects.hashCode(null));//0 //hash,調用Arrays.hashCode()方法 //傳入數組 System.out.println(Objects.hash(arr1));//1627674101 //compare System.out.println(Objects.compare(i1, i2, Integer::compareTo));//-1 //requireNonNull String test = null; //java.lang.NullPointerException String s1 = Objects.requireNonNull(test); //java.lang.NullPointerException: 這是空指針異常提示的信息 String s2 = Objects.requireNonNull(test, "這是空指針異常提示的信息"); //java.lang.NullPointerException: 我是返回的異常信息 String s3 = Objects.requireNonNull(test,()->"我是返回的異常信息");
總結
Objects類給我們提供了一些常用的操作對象的方法,我們可以直接使用,這是非常方便的。isNull()方法和nonNull
()方法,在我們寫方法時需要判斷傳入的參數是否為null可以使用該方法及其方便。
JDK7新增Objects方法介紹(同時包含JDK8新添加的方法)