JavaSE---Object

1、概述

    Object常用方法

       1.1  getClass():            

public final native Class<?> getClass();

            返回   该对象   运行时的Class对象;

package com.an.javase;

public class HashCodeTest {

    public static void main(String[] args){
        System.out.println(new Person().getClass());
    }

    static class Person{
        private String name;
        private int age;
    }
}

结果:
class com.an.javase.HashCodeTest$Person

 

       1.2  hashCode()

public native int hashCode();

             返回该对象的哈希码值;

             这个方法是为了支持java中的散列表,比如:HashMap、hashtable...

             ******java中   调用同一个对象的hashCode()必须   返回相同的整数;

               但是,存在一个问题:有可能不同对象的hashCode()返回值相等

 

       1.3  equals()

public boolean equals(Object obj) {
      return (this == obj);
}

              比较2个对象是否相等(内存中的地址值);

              该方法规定:如果2个对象equals()返回true,则必须有相同的hashCode值

              实际业务中:需要比较不同内存对象但内容相同,也视为相同,需要重写equals();

package com.an.javase;

public class EqualsTest {

    private String name;
    private Integer age;

    @Override
    public boolean equals(Object obj) {
        if (this==obj){
            return true;
        }
        if (obj instanceof EqualsTest){
            EqualsTest equalsTest=(EqualsTest) obj;
            if (equalsTest.name.equals(this.name)){
                return true;
            }
        }
        return false;
    }
}

  

       1.4  toString()

              public String toString() {
                    return getClass().getName() + "@" + Integer.toHexString(hashCode());
                }

             对象自我描述的功能,告诉外界该对象具有的信息;

             当直接将对象进行输出时,调用的是toString();

             toString()返回值:类名+@+hashCode值

 

       1.5  wait()

       1.6  wait(long timeout)

       1.7  wait(long timeout, int nanos)

       1.8  notify()

       1.9  notifyAll()

       1.10  clone()

       1.11  finalize()

protected void finalize() throws Throwable { }

            当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象;

posted on 2019-06-19 17:43  anpeiyong  阅读(152)  评论(0)    收藏  举报

导航