java.util.Ojects类的方法们(一)

一、Objects 与 Object 区别

Object 是 Java 中所有类的基类,位于java.lang包。

Objects 是 Object 的工具类,位于java.util包。它从jdk1.7开始才出现,被final修饰不能被继承,拥有私有的构造函数。

它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。

二、class Objects的方法们

2.1 checkFromToIndex(int fromIndex,int toIndex,int length

描述:检查是否在子范围fromIndex(包括)到toIndex(不包括)是范围界限内0到length(不包括)。

代码如下:

public class Test01 {
    public static void main(String[] args) {
        int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] += 1;
        }
        //此方法的意思为从7到8之前的范围是否在数组arr的范围内
        int x = Objects.checkFromToIndex(7,8,arr.length);
        System.out.println(x);
    }
}
复制代码

结果为:7

2.2 checkFromIndexSize(int fromIndex,int size,int length)

描述:检查子范围从fromIndex(包括)到fromIndex+size(不包括)是范围界限内0(包括)到length(不包括),返回值为fromIndex.。

代码如下

public class Test01 {
    public static void main(String[] args) {
        int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] += 1;
        }
        //此方法的意思为从7到9之前的范围是否在数组arr的范围内
        int x = Objects.checkFromIndexSize(7,2,arr.length);
        System.out.println(x);
    }
}
复制代码

结果为:7

2.3 checkIndex(int index,int length)

描述:检查index是否在0(含)到length(不包括)范围内。

代码如下:

public class Test01 {
    public static void main(String[] args) {
        int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] += 1;
        }
        //此方法的意思为下标7是否在数组arr的范围内
        int x = Objects.checkIndex(7,arr.length);
        System.out.println(x);
    }
}
复制代码

结果为:7

2.4 eqials(Object a,Object b)

描述:如果参数相等返回true,不等为false

代码如下:

public class Test01 {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "123";
        System.out.println(s1.equals(s2));
        String[] a1 = {"a","b","c"};
        String[] a2 = {"a","b","c"};
        System.out.println(s1.equals(s2));
        String s3 = null;
        String s4 = null;
        boolean res = Objects.equals(s3,s4);
        System.out.println(res);
        System.out.println(s1.equals(s2));
    }
}
复制代码

结果为:false false true false

Objects中的equals首先判断传进来的参数是否相等,其次判断第一个参数是否为Null。

由于数组是属于引用类型的变量,在进行比较时比较的是它的内存地址,s1和s2虽然值一样,但是内存地址不一样,所以为false.

2.5 deepEquals(Object a,Object b)

描述:如果是深层次相等返回true,如果不是返回false

代码如下:

public class Test01 {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "123";
        String s3 = "abc";
        boolean res1 = Objects.equals(s1,s3);
        System.out.println(res1);
        boolean res2 = Objects.deepEquals(s1,s3);
        System.out.println(res2);
    }
}
复制代码

结果为:false true

二者的区别在于deepEquals比较的是传入参数的值完全一样返回true。

2.6 isNull(Objdect obj)和noNull(Object obj)

描述:前者是如果提供的参考地是null,返回true;后者是提供的参数是非,返回true。

[提示:在比较对象类型时,只要创建了对象即使没有给对象赋值,该对象也是不为空的]

2.7 toString(Object o)

描述:返回调用的结果toString对于非null参数,若参数为Null,fjhvnull。

代码如下:

public class Test01 {
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("HelloWorld!") ;
        System.out.println(stringBuffer.toString());
    }
}
复制代码

猜你喜欢

转载自juejin.im/post/7031475233575927821