1. Object类 类Object 是类层次结构的根类。每个类都使用Object 作为超类。所有对象(包括数组)都实现这个类的方法。 clone()方法用于创建并返回此对象的一个副本。 equals(Object obj)方法指示其他某个对象是否与此对象“相等”。obj - 要与之比较的引用对象。 finalize()throws Throwable 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。子类重写finalize 方法,以配置系统资源或执行其他清除。 notifyAll()唤醒在此对象监视器上等待的所有线程。 wait(long timeout)throwsInterruptedException wait方法可以在其他线程调用此对象的notify() 方法或notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。
toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。该字符串由类名(对象是该类的一个实例)、at标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于: - getClass().getName() + '@' + Integer.toHexString(hashCode())
复制代码2. 对象的比较 直接用"=="判断两个对象是否一样,是不行的。"=="表示比较两个对象在栈内存中的对象变量的值是否一样,而栈内存中对象的变量实质存的是对象在堆内存中的收地址,所以用"=="比较两个对象时就是在比较两个对象在栈内存中的地址是否一样,除非两个对象是同一个对象,否则他们的收地址是不相等的。所以比较两个对象是否相等应该用父类Object的equals方法。 public boolean eauals(Object obj)方法默认也是用"=="比较的,其中的代码是这样的:return(this==obj); 使用equals时要重载这个方法。实例如下: - //关于于对象的比较,要用覆盖Object的equals方法,
- class Person {
- String name;
- int age;
- public boolean eauals(Object obj) {
- //如果比较的两个类是同一个类,比如遇到某两个类是用get方法得到时需要这样的判断
- if (this == obj) {
- return true;
- }
- //比较两个类是否相等,就是比较他们的所有属性是否一样
- if (obj instanceof Person) {
- Person p=(Person)obj;
- if(this.age==p.age&&this.name==p.name)
- return true;
- }
- return false;
- }
- }
- 我们知道某子类确实是某种类型,但是计算机只知道它是其父类类型,这时我们要用这个对象的特有的成员时,就要用强制转换的方法进行转换。
- 判断两个类是否是同一种类型,用关键字instanceof
复制代码
|