JDK7新增Objects方法介绍(同时包含JDK8新添加的方法)

来源:互联网 发布:怎么在淘宝上直播 编辑:程序博客网 时间:2024/06/06 14:16

前言:

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、为对象返回一个字符串表示、比较两个对象  从j.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,返回0public 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,返回默认值nullDefaultpublic 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,否者返回objpublic static <T> T requireNonNull(T obj) //如果传入的obj为null抛出NullPointerException并可以指定错误信息message,否者返回objpublic static <T> T requireNonNull(T obj, String message)-----------------------------以下是jdk8新增方法---------------------------//判断传入的obj是否为null,是返回true,否者返回falsepublic static boolean isNull(Object obj)//判断传入的obj是否不为null,不为空返回true,为空返回false (和isNull()方法相反)public static boolean nonNull(Object obj)//如果传入的obj为null抛出NullPointerException并且使用参数messageSupplier指定错误信息,否者返回objpublic static <T> T requireNonNull(T obj, Supplier<String> messageSupplier)

知识点四:案例

下面简单测试了几个方法:

package cn.cupcat.java8;import org.junit.Test;import java.util.Comparator;import java.util.Objects;/** * Created by xy on 2017/12/25. */public class ObjectsTest {    /**     *  因为Objects类比较简单,所以只用这一个测试用例进行测试     * */    @Test    public void equalsTest(){        String str1 = "hello";        String str2 = "hello";        //传入对象        //Objects.equals(str1, str2) ?  true        boolean equals = Objects.equals(str1, str2);        System.out.println("Objects.equals(str1, str2) ?  "+ equals);    }    @Test    public void deepEqualsTest(){        String str1 = "hello";        String str2 = "hello";        //传入对象        boolean deepEquals = Objects.deepEquals(str1, str2);        //Objects.deepEquals(str1, str2) ?  true        System.out.println("Objects.deepEquals(str1, str2) ?  "+ deepEquals);        int[] arr1 = {1,2};        int[] arr2 = {1,2};        //传入数组        deepEquals = Objects.deepEquals(arr1, arr2);        //Objects.deepEquals(arr1, arr2) ?  true        System.out.println("Objects.deepEquals(arr1, arr2) ?  "+ deepEquals);    }    @Test    public void hashCodeTest(){        String str1 = "hello";        //传入对象        int hashCode = Objects.hashCode(str1);        //Objects.hashCode(str1) ?  99162322        System.out.println("Objects.hashCode(str1) ?  "+ hashCode);        //传入null        hashCode = Objects.hashCode(null);        //Objects.hashCode(null) ?  0        System.out.println("Objects.hashCode(null) ?  "+ hashCode);    }    @Test    public void hashTest(){        int  a  = 100;        //传入对象        int hashCode = Objects.hashCode(a);        //Objects.hashCode(str1) ?  100        System.out.println("Objects.hashCode(str1) ?  "+ hashCode);        //输入数组        int[] arr = {100,100};        hashCode = Objects.hash(arr);        //Objects.hashCode(arr) ?  1555093793        System.out.println("Objects.hashCode(arr) ?  "+ hashCode);    }    @Test    public void compareTest(){        int a = 10;        int b = 11;        int compare = Objects.compare(a, b, new Comparator<Integer>() {            @Override            public int compare(Integer o1, Integer o2) {                return o1.compareTo(o2);            }        });        // compare = -1        System.out.println(" compare = "+ compare);    }    @Test    public void requireNonNullTest(){        String test = null;        //java.lang.NullPointerException       // String s = Objects.requireNonNull(test);        //java.lang.NullPointerException: 这是空指针异常提示的信息        //String s = Objects.requireNonNull(test, "这是空指针异常提示的信息");        //java.lang.NullPointerException: 我是返回的异常信息        String s = Objects.requireNonNull(test,()->"我是返回的异常信息");    }}

知识点五:总结

Objects类给我们提供了一些常用的操作对象的方法,我们可以直接使用,这是非常方便的。尤其是requireNonNull()方法,在我们写方法时需要判断传入的参数是否为null可以使用该方法及其方便。
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 鸡眼很小怎么办 跖疣贴鸡眼膏会怎样 如何除掉鸡眼 可乐小鸡腿 小鸡腿做法 冻鸡腿快速解冻去腥味小妙招 小鸡腿怎么做 可乐小鸡腿的做法 可乐小鸡腿怎么做好吃 红烧小鸡腿的简易做法 炸小鸡腿怎么做好吃 油炸小鸡腿的做法大全 炖小鸡腿的做法大全 红烧大鸡腿 红烧鸡腿土豆的做法 做红烧肉的方法 鸡小腿怎么做好吃 小鸡小鸡舞 小斗鸡图片 小鸡苗批发市场 那里有小鸡苗批发 2019小鸡苗批发价 黑土二鸡苗 小鸡苗吃什么 小鸡价格 小鸡小鸡下载 超级小鸡 西红柿炒鸡蛋8个小窍门 煮鸡蛋不破小窍门 小猫能吃鸡蛋吗 猫吃鸡蛋 祛斑小妙招醋泡鸡蛋 小兄弟鸡蛋灌饼 鸡蛋壳手工制作小动物 鸡蛋了 鸡蛋小饼干的做法 小鸡蛋仔 洋鸡蛋和草鸡蛋 草鸡蛋 洋鸡蛋 小鸡蛋饼的做法 鸡蛋哥哥