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 ,则返回第一个参数,否则返回非 null 值 supplier.get() 。 |
static String |
toString(Object o) |
返回调用的结果 toString 对于非 null 参数, "null" 为 null 的说法。 |
static String |
toString(Object o, String nullDefault) |
如果第一个参数不是 null ,则返回在第一个参数上调用 toString 的结果,否则返回第二个参数。 |