Class Objects
Objects类库的作用
此类包含static实用程序方法,用于操作对象或在操作前检查某些条件。 这些实用程序包括null或null方法,用于计算对象的哈希代码,返回对象的字符串,比较两个对象,以及检查索引或子范围值是否超出范围。
方法摘要
以下是Objects类含有的一些静态方法及代码演示:
方法1:checkFromIndexSize(int fromIndex, int size, int length)
变量和类型:static int
描述:检查是否在子范围从 fromIndex (包括)到 fromIndex + size (不包括)是范围界限内 0 (包括)到 length (不包括)。 简单理解就是:[fromIndex, fromIndex + size )是否被包含于[0,length)。
如果以下任何不等式为真,则子范围被定义为超出界限:
fromIndex < 0
size < 0
fromIndex + size > length ,考虑到整数溢出
length < 0 ,这是前者的不平等所暗示的
代码演示:
package com.java.demo1;
import java.util.Objects;
public class Demo1 {
public static void main(String args[]){
int b = Objects.checkFromIndexSize(6,10,16);
System.out.println(b);
}
}
执行结果:
小结:
执行结果:
1、如果子范围在范围的范围内,返回值为:fromIndex
2、如果子范围超出范围,生成一个异常对象-IndexOutOfBoundsException
方法2:checkFromToIndex(int fromIndex, int toIndex, int length)
变量和类型:static int
描述:检查是否在子范围从 fromIndex (包括)到 toIndex (不包括)是范围界限内 0 (包括)到 length (不包括)。 简单理解就是:[fromIndex,toIndex)是否被包含于[0,length)。
如果以下任何不等式为真,则子范围被定义为超出界限:
fromIndex < 0
fromIndex > toIndex
toIndex > length
length < 0 ,这是前者的不平等所暗示的
代码演示:
package com.java.demo1;
import java.util.Objects;
public class Demo1 {
public static void main(String args[]){
int b = Objects.checkFromToIndex(6,7,7);
System.out.println(b);
}
}
执行结果:
小结:
执行结果:
1、如果子范围在范围的范围内,返回值为:fromIndex
2、如果子范围超出范围,生成一个异常对象-IndexOutOfBoundsException
方法3:checkIndex(int index, int length)
变量和类型:static int
描述:检查 index是否在 0 (含)到 length (不包括)范围内。 简单理解就是:index是否被包含于[0,length)。
如果以下任何不等式为真,则定义index超出范围:
index < 0
index >= length
length < 0 ,这是前者的不平等所暗示的
代码演示:
package com.java.demo1;
import java.util.Objects;
public class Demo1 {
public static void main(String args[]){
int b = Objects.checkIndex(6,7);
System.out.println(b);
}
}
执行结果:
小结:
执行结果:
1、如果index在[0,length)范围内,返回值为:Index
2、如果index不在[0,length)范围内,生成一个异常对象-IndexOutOfBoundsException
方法4:deepEquals(Object a, Object b)
变量和类型:static boolean
描述:如果参数是深层相等返回 true,其他返回false。
对于基本数据类型来说,若是值相等则返回true。
对于引用数据类型来说,若是地址相等则返回true,否则继续判断值是否相等,相等则返回true,否则返回false。
代码如下:
public static boolean deepEquals(Object a, Object b) {
if (a == b)
return true;
else if (a == null || b == null)
return false;
else
return Arrays.deepEquals0(a, b);
}
小结:相较于Objects中的equals方法deepEquals能够对引用数据类型进行深层的判断。
方法5:equals(Object a, Object b)
变量和类型:static boolean
描述:如果参数相等返回 true,其他返回false。
对于基本数据类型若是值相等则返回true,否则返回false。
对于引用数据类型来说,若是地址相等则返回true,否则返回false
代码如下:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
小结:Objects类中的equals方法相较于deepEquals方法来说,对于基本数据类型的判断结果是一样的,对于引用数据类型的判断equals只能够对地址进行判断,而不能进行更加深入的判断。
总结:
以上是我对Objects类库中部分方法的总结,希望各位大佬多多指正!