java常用类(1)Object类

来源:互联网 发布:网络与新媒体大学排名 编辑:程序博客网 时间:2024/06/05 00:53

Object类:是java所有类的祖先,每个类都使用Object作为超类。java只支持单继承,类未声明extends父类,默认为Object。可以使用类型为Object的变量指向任意类型的对象。

比较重要的方法如下:

     1.getClass()方法:返回一个对象实例的运行期类型。

          1)在构造方法中获取当前实例化的对象类型。

          2)获取引用数据类型,所指向的对象实例的类型。


    2.hashCode()方法:返回对象实例的hash码,即内存地址的一种表现。

         1)对象实例化后hash码固定,不会因对象属性改变而改变。再次执行程序,hash码不要求和之前一致。

         2)如equals方法返回true,hash码也应该一致。

         3)开发者应尽量做到为不是equals的对象,产生不同的hash码。

         4)从实际运用的角度,java将对象实例的内存地址转为整型。


    3.equals()方法:判断其他对象是否和当前对象相等。

          对于非空引用x的相等运算,满足以下特性:

         1)自反性:对于任何非空引用值x,x.equals(x)会返回true

         2 ) 对称性:对于任何非空引用值x和y,x.equals(y)会返回true当且仅当y.equals(x)返回true

         3)传递性:对于任何非空引用x,y,z,如果x.equals(y)返回true,且用y.equals(z)返回true,

                             则x.equals(z)也返回true

         4)一致性:对于任何非空引用值x和y,在对象引用值没有修改的前提下多次调用会一致返回true和false.

          对于任何的非空引用值想,x.equals(null)会返回true

        在java.lang.Object的实现代码中,默认比较内存地址

           public boolean equals(Object obj){

                    return(this==obj)

          }

        例:Animal animal1 = new Dog();

               Animal animal2 = new Dog();

               System.out.println(animal1==animal2);//false

               System.out.print(animal1.equals(animal2));//false;

              对于如上代码,使用==和equals方法。结果都是false,这是因为两个对象实例的内存地址不同。

              根据需求重写equals方法,可以判断对象实例在逻辑上(非内存地址)是否相等。

           

    4.toString()方法:打印对象信息

        所有类都会直接或者间接继承于Object类,都会拥有toString()方法,而Object类中的toString()方法只是返回类的权限定名和内存地址码。可以重写toString()方法,来实现自己所需要的打印信息。重写过后的toString()方法,其实例的内存地址将无法看到。

    5.clone()方法:

             浅克隆:实现Cloneable()接口,然后直接调用clone()方法

             深克隆:如果对象中有引用数据类型,就必须使用深度克隆,就是在克隆时,要把对象中的引用类型对象,也要进行克隆。

    6.finalize()方法:定义回收当前对象时需要完成的清理工作。

        public static void main(String[] args){

             Car car =new Car();

             car.service();

             car =null;

             System.gc();


     }