学习使用的环境如下:
操作系统:Windows 10 家庭中文版
语言 :Java
JDK版本 :jdk-11.0.9
开发工具:IntelliJ IDEA 2021.1.2
@[toc]
一、Objects是什么?又有什么作用?
在JDK11的DOCS文件中可以搜索Objects,可以看在类名的下面有这样一个全类路径的结构,如下:
由图中红框的全类路径可知,Objects类是存放在java.util工具类库中的,所以Objects是一个工具类,也可以看到Objects继承于Object类。
1.Objects的作用
首先看下以下官网文档中的描述:
所以Objects类是一个使用的工具类,其中包括很多static实用程序的方法,例如:返回一个对象的哈希值,比较两个对象是否相等以及判断一个对象是否为空等等一系列的实用方法。
二、Objects中有那么方法?常用的又有哪些?
以下是官方文档给出的Objects类中包括的方法,其中不包含父类Object中的方法。
三、常用的Objects API的学习与使用
1.checkFromIndexSize(int fromIndex, int size, int length)
1.1参数的说明
fromIndex
- 子间隔的下限(包括)
size
- 子范围的大小
length
- 范围的上限(不包括)
1.2 作用
检查是否在子范围从fromIndex
(包括)到fromIndex + size
(不包括)是范围界限内0
(包括)到length
(不包括),简单来说就是判断简单理解就是是否越界,意思就是fromIndex+(fromIndex+size)是不是在区间0-length内, 如果在length内就返回formIndex的值,如果不在将抛出异常IndexOutOfBoundsException
import java.util.Objects;
public class Test1 {
public static void main(String[] args) {
System.out.println(Objects.checkFromIndexSize(2,2,5));
}
}
运行结果:
运行超出length范围的异常:
2.checkFromToIndex(int fromIndex, int toIndex, int length)
2.1参数详解
fromIndex
- 子范围的下限(包括)
toIndex
- 子范围的上限(不包括)
length
- 上限(不包括)范围
2.2作用
检查是否在子范围从fromIndex
(包括)到toIndex
(不包括)是范围界限内0
(包括)到length
(不包括),简单理解就是判断fromIndex-toIndex是否是在0-length区间内。
如果在length内就返回formIndex的值,如果不在将抛出异常IndexOutOfBoundsException
import java.util.Objects;
public class Test1 {
public static void main(String[] args) {
System.out.println(Objects.checkFromToIndex(1,2,3));
}
}
运行结果如下:
3.checkIndex(int Index,int length)
3.1参数详解
index
- 该指数
length
- 范围的上限(不包括)
3.2作用
检查index
是否在0
(含)到length
(不包括)范围内。如果idnex在0-length范围内就返回index的值。
import java.util.Objects;
public class Test1 {
public static void main(String[] args) {
System.out.println(Objects.checkIndex(5,5));
}
}
注意:length是不包括的,超过范围就会报IndexOutOfBoundsException异常
4.deepEquals(Object a,Object b)
4.1 参数详解
a
:一个对象
b
: 与 a
进行比较的对象,用于深度相等
4.2 作用
判断两个对象是否是深层相等。
5.equals(Object a, Object b)
5.1参数详解
a
:一个对象
b
: 与 a
进行比较以获得相等性的对象
5.2作用
判断a和b两个对象是否相等。相等时返回true,不相等返回false
import java.util.Objects;
public class Test1 {
public static void main(String[] args) {
String s1 = "1";
String s2 = "1";
boolean res = Objects.equals(s1, s2);
System.out.println(res);
}
}
运行结果为true
5.3 与a.rquals(b)的比较
Objects.equals当第一个参数为null直接返回的flase,而不会发生异常
a.rquals(b):当a为空时,会发生异常
6.hash(Object... values)
6.2 参数详解
values : 目标值
6.3 作用
为一系列的值生成hash码
import java.util.Objects;
public class Test1 {
public static void main(String[] args) {
int i = 111111;
int hash = Objects.hash(i);
System.out.println("hash生成的值:" + hash);
}
}
运行结果:
运行结果:
7.hashCode(Object
o)
7.1 参数详解
o : 传入的对象
7.2 作用
用于返回一个传入对象的hash值
import java.util.Objects;
public class Test1 {
public static void main(String[] args) {
Person p1 = new Person("小明",18);
int hash = Objects.hash(p1);
System.out.println("hashCode生成的值:" + hash);
}
}
class Person {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
8.isNull(Object obj)
8.1参数解释
obj : 需要判断的对象
8.2 作用
判断一个对象是否为null
true: 对象为null
false: 对象为null
import java.util.Objects;
public class Test1 {
public static void main(String[] args) {
String str1 = "String";
String str2 = null;
boolean b1 = Objects.isNull(str1);
boolean b2 = Objects.isNull(str2);
System.out.println(b1);
System.out.println(b2);
}
}
运行结果:
9.nonNull(Object obj)
9.1参数解释
obj : 需要判断的对象
9.2 作用
判断一个对象是否不为null
true : 对象不为null
false : 对象为null
import java.util.Objects;
public class Test1 {
public static void main(String[] args) {
String str1 = "String";
String str2 = null;
boolean b1 = Objects.nonNull(str1);
boolean b2 = Objects.nonNull(str2);
System.out.println(b1);
System.out.println(b2);
}
}
运行结果:
10 toString(Objecr o)与同toString(Object o ,String nullDefault)
10.1toString(Object o)
参数详解:
o : 要转换成String对象的目标对象
作用:
将传入的对象转为String对象
import java.util.Objects; public class Test1 { public static void main(String[] args) { int i = 1000; System.out.println(Objects.toString(i)); } }
10.2 toString(Object o ,String nullDefault)
参数详解:
o : 要转换成String对象的目标对象
nullDefault: 当o为null时返回的值
作用:
将传入的对象转换为String对象,如果o为null,则返回nullDefault的值。
import java.util.Objects;
public class Test1 {
public static void main(String[] args) {
System.out.println(Objects.toString(null,"第一个参数为null"));
}
}
运行结果: