深入了解Java核心类库??Objects类( 二 )
2 区别于Object
2.1 Object构造方法
public Object()
- Object类是基类,是所有类的父类(基类)
- 如果一个类没有明确的继承某一个具体的类,则将默认继承Object类
public class Person{
}
其实它被使用时 是这样的:
public class Person extends Object{
}
- object的多态:使用Object可以接收任意的引用数据类型
public static void main(String[] args){ String text = "123"; say(text); int a = 10; say(a); say("123");}public static void say(Object o){//多态的体现 System.out.println(o);}
2.2 Object其他方法返回值方法名作用static intcheckFromIndexSize(int fromIndex, int size, int length)检查子范围[ fromIndex ,fromIndex + size)是否在 [0,length)范围界限内 。static intcheckFromToIndex(int fromIndex, int toIndex, int length)检查子范围[ fromIndex ,toIndex)是否在 [0,length)范围界限内static intcheckIndex(int index, int length)检查子范围index是否在 [0,length)范围界限内static intcompare(T a, T b, Comparator<? super T> c)如果参数a,b相同则返回0,否则返回c.compare(a, b)的结果static booleandeepEquals(Object a, Object b)对比a,b参数是否深层次相等(如果a,b为数组,则对比数组的每个参数)static booleanequals(Object a, Object b)对比a,b参数是否相等static inthash(Object… values)为输入值序列生成哈希码static inthashCode(Object o)非空返回哈希码,null则抛出NullPointerExceptionstatic booleanisNull(Object obj)obj参数为null返回truestatic booleannonNull(Object obj)obj参数不为null返回truestatic TrequireNonNull(T obj)检查指定的对象引用不是 null,为null则抛出NullPointerExceptionstatic TrequireNonNull(T obj, String message)检查指定的对象引用不是null,否则抛出自定义的NullPointerExceptionstatic TrequireNonNull(T obj, Supplier messageSupplier)检查指定的对象引用是否为null,如果是,则抛出自定义的NullPointerException。static TrequireNonNullElse(T obj, T defaultObj)如果它是非 null,则返回第一个参数,否则返回非 null第二个参数 。static TrequireNonNullElseGet(T obj, Supplier<? extends T> supplier)如果它是非 null,则返回第一个参数,否则返回非 null值 supplier.get()。static StringtoString(Object o)返回对象的字符串表示形式static StringtoString(Object o, String nullDefault)如果第一个参数不是 null,则返回第一个参数调用 toString的结果,否则返回第二个参数
2.2.1 equals(Object obj)
equals(Object obj)源码:
public boolean equals(Object obj) {
return (this == obj);
}
- equals方法在非null对象引用上实现等价关系
- 等于
- 对于任何非空引用值x和y,当且仅当x和y引用同一对象( x == y具有值true )时,此方法返回true
- ==比的是内存地址
- 请注意,通常需要在重写此方法时覆盖hashCode方法,以便维护hashCode方法的常规协定,该方法声明相等对象必须具有相等的哈希代码 。
输出结果:equals方法重写时的五个特性:
p:1239731077
e:357863579
false
e:1239731077
true
自反性 :对于任何非空的参考值x,x.equals(x)应该返回true。
对称性 :对于任何非空引用值x和y,x.equals(y)应该返回true当且仅当y.equals(x)返回true。
传递性 :对于任何非空引用值x ,y和z,如果x.equals(y)回报true并且y.equals(z)返回true,x.equals(z)应该返回true。
一致性 :对于任何非空引用值x和y,多次调用x.equals(y)始终返回true或始终返回false,前提是未修改对象上的equals比较中使用的信息 。
非空性 :对于任何非空的参考值x,x.equals(null)应该返回false。
2.2.2 toString()
toString()源码默认为字符串,通常返回一个“文本表示”此对象的字符串,返回对象的内存地址(对象实例的类名称@对象的哈希码的无符号十六进制,即:getClass().getName() + ‘@' + Integer.toHexString(hashCode()))
public String toString() {
return getClass().getName() + “@” + Integer.toHexString(hashCode());
}
- 头腔共鸣简单方法
- 知己是一种什么感情
- 快手直播说话技巧
- 3699起 一图了解AGM G1:零下40度还能跑分 同环境下iPhone索尼全挂
- 央行降息与降准有什么区别 带你了解清楚!
- 想了解空调扇湿帘如何清洗 空调扇湿帘怎样清洗
- 红茶的作用
- 群众路线如何走
- 毛线帽子大了解决方法
- 最不了解自己的人的成语
