Java常用类库
1、Class Objects
1.1、Objects类的介绍
Objects类所继承的父类是Object类,创建并使用该类时需要导入的包为:java.util.Objects 。此外,该类中包含的static方法可以用于操作对象或在操作前检查某个条件。
1.2、Objects类的方法
1.2.1、equals方法
该方法返回值为布尔类型,使用该方法时需要传入两个Object类型(意味着可传入任何类型)的参数,而后将两个参数进行比较大小,如果传入的两个参数都为null,那返回true;如果其中一个参数为null,则返回false;如果两个参数都不为null,且值相等,则返回true,不相等,则返回false;当传入的两个参数的类型不一致时,会返回false。使用该方法的好处是:当你需要用equals方法比较时,不用担心参数存在空值时,抛出NullPointerException 该类异常
以下是java代码:
public class test {
public static void main(String[] args) {
String a = "123";
String b = "";
String c = "";
String d = "123";
int e = 123;
int f = 123;
System.out.println(Objects.equals(a, b));
System.out.println(Objects.equals(b, c));
System.out.println(Objects.equals(a, d));
System.out.println(Objects.equals(e, f));
System.out.println(Objects.equals(a, e));
}
}
以下是控制台输出的效果图:
1.2.2、toString方法
该方法返回值的是String类型,使用该方法时传入一个参数,参数类型为Object类型,该方法作用是:将传入的Object类型的参数转化为String类型返回出来;如果传入的参数为空值,那返回的值就为空。
以下是java代码:
public class test {
public static void main(String[] args) {
String a = "123";
String b = null;
char c = 'a';
int d = 456;
System.out.println(Objects.toString(a));
System.out.println(Objects.toString(b));
System.out.println(Objects.toString(c));
System.out.println(Objects.toString(c).getClass());
System.out.println(Objects.toString(d));
System.out.println(Objects.toString(d).getClass());
}
}
以下是控制台输出的效果图:
由效果图可以清楚的看出不管传入的是什么类型的参数,最后都会被转化成Sring类型返回,而传入的参数对象b的值为空,那在控制台就会输出为空。
上述的toString方法还有另一个重载方法,该方法的返回值还是String类型,但使用该方法是=时传入两个参数,第一个参数的类型为Object类型,第二个为String类型,作用是当传入的第一个参数的值不为空时,还是返回该参数调用toString方法所返回的值,当传入的第一个参数的值为空时,则会返回第二个参数调用toString方法返回的值。
以下是java代码:
public class test {
public static void main(String[] args) {
String a = "123";
String b = null;
String c = "456" ;
System.out.println(Objects.toString(a));
System.out.println(Objects.toString(b));
System.out.println(Objects.toString(b,a));
System.out.println(Objects.toString(c));
System.out.println(Objects.toString(c,a));
}
}
以下是控制台输出的效果图:
1.2.3、isNull方法
该方法的返回值为布尔类型,使用该方法时传入一个参数,参数类型为Object类型,作用是:判断传入的参数的值是否为空,如果为空,返回true;如果不为空,则返回false。
以下是java代码:
public class test {
public static void main(String[] args) {
String a = "123";
String b = null;
System.out.println(Objects.isNull(a));
System.out.println(Objects.isNull(b));
}
}
以下是控制台输出的效果图:
1.2.4、nonNull方法
该方法的返回值为布尔类型,使用该方法时传入一个参数,参数类型为Object类型,作用是:判断传入的参数的值是否为不为空,如果为不为空,返回true;如果为空,则返回false。
以下是java代码:
public class test {
public static void main(String[] args) {
String a = "123";
String b = null;
System.out.println(Objects.nonNull(a));
System.out.println(Objects.nonNull(b));
}
}
以下是控制台输出的效果图:
1.2.5、checkIndex方法
该方法的返回值是int类型,使用该方法时需要传入两个int类型的参数,作用是:检测你传入的第一个参数的值,是否在0(包括)到第二个你传入的值(不包括)之间,如果在中间,返回第一个参数的值,如果不在中间,则会抛出IndexOutOfBoundsException 该类异常。
使用该方法后会抛出IndexOutOfBoundsException 该类异常的条件:
- 第一个参数的值<0
- 第二个参数的值<0
- 第一个参数的值>=第二个参数的值
以下是java代码:
public class test {
public static void main(String[] args) {
int a = 5;
int b = 1;
int c = 6;
System.out.println(Objects.checkIndex(b, a));
System.out.println(Objects.checkIndex(c, a));
}
}
以下是控制台输出的效果图:
由上面效果图可以看出:第一个输出语句是执行了,输出的是第一个参数b的值,而第二个输出语句则抛出了异常,程序直接中断,这是因为参数c的值>参数a的值,满足了上面抛出异常的第三个条件(第一个参数的值>=第二个参数的值)。
Objects类中判断是否越界的方法除了有checkIndex方法,还有checkFromToIndex方法和checkFromIndexSize方法。
1.2.6、checkFromToIndex方法
该方法的返回值为int类型,使用该方法时传入三个int类型的参数,作用是:检测你传入的第一个参数的值(包括)到传入的第二个参数的值(不包括)该范围,是否在0(包括)到传入的第三个值(不包括)该范围之间,如果在中间,返回第一个参数的值,如果不在中间,也会抛出IndexOutOfBoundsException 该类异常。
使用该方法后会抛出IndexOutOfBoundsException 该类异常的条件:
- 第一个参数的值<0
- 第三个参数的值<0
- 第一个参数的值>第二个参数的值
- 第二个参数的值>第三个参数的值
以下是java代码:
public class test {
public static void main(String[] args) {
int a = 5;
int b = 2;
int c = 6;
System.out.println(Objects.checkFromToIndex(b, a, c));
System.out.println(Objects.checkFromToIndex(b, c, a));
}
}
以下是控制台输出的效果图:
由上面效果图可以看出:第一个输出语句是执行了,输出的是第一个参数b的值,而第二个输出语句则抛出了异常,程序直接中断,这是因为参数c的值>参数a的值,满足了上面抛出异常的第四个条件(第二个参数的值>第三个参数的值)。
我就介绍checkFromToIndex方法了,checkFromIndexSize方法就不做太具体的介绍了,其实该方法和checkFromToIndex方法区别在传入的第二个参数的作用上,作用也是检测是否越界,不过判断条件变为了第一个参数的值(包括)到(第一个参数的值+第二个参数的值)的和(不包括)该范围,是否在0(包括)到第三个参数的值(不包括)该范围之间。感兴趣的小伙伴可以去百度了解更详细的内容。
Objects类的方法肯定不止我所陈述的以上几种,还有以下我不太了解的方法:
(1)requireNonNull方法:( public static <T> T requireNonNull(T obj)和 public static <T> T requireNonNull(T obj, String message),这两个方法主要用于方法和构造函数中进行参数验证是否不为null。第一个方法验证出参数为null,会直接抛出NullPointerException该类异常;而第二个方法验证出参数为null,会返回你传入的第二个String类型的非空字符串 );
(2)compare方法:( public static int compare(T a, T b, Comparator<? super T> c) );
(3)requireNonNullElse方法:( public static <T>T requireNonNullElse(T obj, T defaultObj) );
(4)requireNonNullElseGet方法:( public static T requireNonNullElseGet(T obj, Supplier<? extends T> supplier) )。
以上就是我总结的关于Objects类的相关知识要点。