Java常用类库 - Object和Objects
位于java.lang包下
Object类
Object 类是Java语言中的根类,所有的类都直接或者间接的继承自Object类。即 如果一个类没有指定父类,那么默认继承Object类(所有类的父类)。
构造方法
构造器描述Object()构造一个新对象
Object类的构造方法为无参构造而且只有一个,这就是为什么所有类的默认构造函数为无参构造:所有的类均继承自Object类,子类对象默认访问父类即Object的构造即无参构造。
所有方法
变量和类型方法描述protected Objectclone()创建并返回此对象的副本(浅克隆)booleanequals(Object obj)某个对象是否与之相等Class>getClass()final方法,返回此Object的运行时类inthashCode()获取对象的hash值voidnotify()唤醒在该对象监视器上等待的单个线程voidnotifyAll()唤醒等待此对象监视器上的所有线程StringtoString()返回对象的字符串表示形式voidwait()当前线程等待获得锁,直到获得锁或中断voidwait(long timeoutMillis)设置一个超时时间(毫秒)voidwait(long timeoutMillis,int nanos)设置一个超时时间(毫秒+纳秒)
线程调用wait()方法后进入睡眠状态,以下情况会被终止线程睡眠:
其他线程调用了该对象的notify()/notifyAll()方法;其他线程调用了interrupt中断该线程;时间间隔到了(如果有的话)。
Objcets类
位于java.util包下
此类包含static实用程序方法,用于操作对象或在操作前检查某些条件。 这些实用程序包括null或null方法,用于计算对象的哈希代码,返回对象的字符串,比较两个对象,以及检查索引或子范围值是否超出范围。
所有方法
常用方法
1.equals(Object a,Object b)
解决调用对象为空的情况,比如:
public static void main(String[] args){
String s1 = null;
String s2 = "abc";
System.out.println(s1.equals(s2));// NullPointerException
}
当调用对象s1为null时,编译器就会抛出NullPointerException,那么为了避免这种情况,就可以使用Objects类的equals()方法:
public static void main(String[] args){
String s1 = null;
String s2 = "abc";
//System.out.println(s1.equals(s2));// NullPointerException
System.out.println(Objects.equals(s1,s2));// false
}
下面附上Objects的equals()源码
public static boolean equals(Object a, Object b) {
//==判断地址
return (a == b) || (a != null && a.equals(b));
}
2…requireNonNull(T obj)
要求对象obj必须是非空,否则就抛出异常,在一些要求对象数据必须非空的场景下非常好用:
public static void main(String[] args) throws CloneNotSupportedException {
String s = null;
Objects.requireNonNull(s);
}
源码
public static
if (obj == null)
throw new NullPointerException();
return obj;
}
eNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}