博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK7新增Objects方法介绍(同时包含JDK8新添加的方法)
阅读量:4984 次
发布时间:2019-06-12

本文共 3067 字,大约阅读时间需要 10 分钟。

前言

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,返回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 
int compare(T a, T b, Comparator
c) //如果传入的obj为null抛出NullPointerException,否者返回objpublic static
T requireNonNull(T obj) //如果传入的obj为null抛出NullPointerException并可以指定错误信息message,否者返回objpublic static
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 requireNonNull(T obj, Supplier
messageSupplier)

案例

//equalsString 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//传入nullSystem.out.println(Objects.hashCode(null));//0//hash,调用Arrays.hashCode()方法//传入数组System.out.println(Objects.hash(arr1));//1627674101//compareSystem.out.println(Objects.compare(i1, i2, Integer::compareTo));//-1//requireNonNullString test = null;//java.lang.NullPointerExceptionString s1 = Objects.requireNonNull(test);//java.lang.NullPointerException: 这是空指针异常提示的信息String s2 = Objects.requireNonNull(test, "这是空指针异常提示的信息");//java.lang.NullPointerException: 我是返回的异常信息String s3 = Objects.requireNonNull(test,()->"我是返回的异常信息");

总结

Objects类给我们提供了一些常用的操作对象的方法,我们可以直接使用,这是非常方便的。isNull()方法和nonNull

()方法,在我们写方法时需要判断传入的参数是否为null可以使用该方法及其方便。

转载于:https://www.cnblogs.com/ninety/p/9988093.html

你可能感兴趣的文章
${sessionScope.user}的使用方法
查看>>
IOS断点下载
查看>>
Steal 偷天换日 题解(From luoguBlog)
查看>>
Hadoop HDFS学习总结
查看>>
C#wxpay和alipay
查看>>
Combination Sum
查看>>
WCF开发框架形成之旅---结合代码生成工具实现快速开发
查看>>
Spring事务管理
查看>>
JS||JQUERY常用语法
查看>>
talend hive数据导入到mysql中
查看>>
ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected
查看>>
linux下mysql配置文件my.cnf详解
查看>>
获取微信用户列表Openid
查看>>
架构必备词汇
查看>>
SublimeText快捷键操作
查看>>
Python开发 基礎知識 (未完代補)
查看>>
监听器的使用,以及实现, 测试
查看>>
eCharts 折线图,动态绑定数据不更新图表的问题,
查看>>
java基础二 分支循环
查看>>
python--002--数据类型(list、tuple)
查看>>