文章目录
- 一、Objects类是什么?
- 二、方法的使用(从1.7版本开始);
-
- 1.checkFromIndexSize(int fromIndex, int size, int length)
- 2.checkFromToIndex(int fromIndex, int toIndex, int length)
- 3.checkIndex(int index, int length)
- 4.~~compare(T a, T b, Comparator<? super T> c)~~
- 5.deepEquals(Object a, Object b)
- 6.equals(Object a, Object b)
- 7.~~hash(Object... values)~~
- 8.~~hashCode(Object o)~~
- 9.isNull(Object obj)
- 10.nonNull(Object obj)
- 11.requireNonNull(T obj)
- 12.requireNonNull(T obj, String message)
- 13.~~requireNonNull(T obj, Supplier messageSupplier)~~
- 14.requireNonNullElse(T obj, T defaultObj)
- 15.~~requireNonNullElseGet(T obj, Supplier<? extends T> supplier)~~
- 16.toString(Object o)
- 17.toString(Object o, String nullDefault)
- 总结
一、Objects类是什么?
Objects类是Object类的一个子类,此类包含一些static实用程序方法,用于操作对象或在操作前检查某些条件。 这些实用程序包括null或null方法,用于计算对象的哈希代码,返回对象的字符串,比较两个对象,以及检查索引或子范围值是否超出范围。
二、方法的使用(从1.7版本开始);
1.checkFromIndexSize(int fromIndex, int size, int length)
该方法从9版本开始。
(1)变量和类型:static int;
(2)参数说明:
- fromIndex - 子间隔的下限(包括)
- size - 子范围的大小
- length - 范围的上限(不包括)
(3)方法的作用:检查fromIndex(包括)和size(不包括)相加是否大于length;但是如果下面任一条件为真,则子范围被定义为超出界限抛出异常(IndexOutOfBoundsException):
- fromIndex < 0
- size < 0
- fromIndex + size > length
- length < 0
如果在条件范围内则会返回fromIndex的值(注意,fromIndex+size=length也返回fromIndex的值,因为该方法判断时不包括上限length的值)
(4)原方法代码中的判断代码:
if ((length | fromIndex | size) < 0 || size > length - fromIndex)
throw outOfBoundsCheckFromIndexSize(oobef, fromIndex, size, length);
return fromIndex;
(5)实例测试:
import java.util.Objects;
public class checkFromIndexSize_test {
public static void main(String[] args) {
System.out.println(Objects.checkFromIndexSize(2,4,7));//2+4<7,返回2
System.out.println(Objects.checkFromIndexSize(3,3,6));//3+3=6,返回3
System.out.println(Objects.checkFromIndexSize(4,4,7));//4+4>7,抛出异常
}
}
2.checkFromToIndex(int fromIndex, int toIndex, int length)
该方法从9版本开始。
(1)变量和类型:static int;
(2)参数说明:
- fromIndex - 子范围的下限(包括)
- toIndex - 子范围的上限(不包括)
- length - 上限(不包括)范围
(3)方法的作用:检查否在子范围从fromIndex(包括)到toIndex (不包括)是范围界限内0(包括)到length (不包括)。
如果下面任一条件为真,则子范围被定义为超出界限抛出异常(IndexOutOfBoundsException): - fromIndex < 0
- fromIndex > toIndex
- toIndex > length
- length < 0
如果在条件范围内则会返回fromIndex的值(注意:fromIndex可以为0,并且fromIndex可以等于toIndex;toIndex可以等于length)。
(4)原方法中的判断代码:
if (fromIndex < 0 || fromIndex > toIndex || toIndex > length)
throw outOfBoundsCheckFromToIndex(oobef, fromIndex, toIndex, length);
return fromIndex;
(5)实例测试:
import java.util.Objects;
public class checkFromToIndex_test {
public static void main(String[] args) {
System.out.println(Objects.checkFromToIndex(0,1,2));//0<1<2,返回0
System.out.println(Objects.checkFromToIndex(1,1,1));//1=1=1,返回1
System.out.println(Objects.checkFromToIndex(2,5,3));//5>3,抛出异常
}
}
3.checkIndex(int index, int length)
该方法从9版本开始。
(1)变量和类型:static int;
(2)参数说明:
- index - 该指数
- length - 范围的上限(不包括)
(3)方法的作用:检查index是否在0 (含)到length (不包括)范围内。
如果下面任一条件为真,则定义index超出范围抛出异常(outOfBoundsCheckIndex): - index < 0
- index >= length
- length < 0
如果在条件范围则会返回index的值。
(4)原方法中的判断代码:
if (index < 0 || index >= length)
throw outOfBoundsCheckIndex(oobef, index, length);
return index;
(5)实例测试:
import java.util.Objects;
public class checkIndex_test {
public static void main(String[] args) {
System.out.println(Objects.checkIndex(0,2));//0<2,返回0
System.out.println(Objects.checkIndex(1,1));//1=1,抛出异常
}
}
4.compare(T a, T b, Comparator<? super T> c)
该方法暂未整理。
5.deepEquals(Object a, Object b)
(1)变量和类型:static boolean;
(2)参数说明:
- a - 一个物体
- b - 与 a进行比较的对象,用于深度相