Java零基础学习(Object类)

Java零基础学习(Object类)

  • API概述以及Object类的概述

    1.API(Application Programming Interface)
    	应用程序编程接口
    2.Java API
    	就是Java提供给我们使用的类,这些类将底层的实现封装了起来
    	我们不需要关心这些类是如何实现的,只需要学习如何使用过这些类
    3.Object类概述
    	类层次结构的根类
    	所有类都直接或者间接的继承此类
    4.构造方法
    	public Object()
    	子类的构造方法默认访问的是父类的无参构造方法
    
    • Object类的hashCode()方法

    public int hashCode()
    	1.返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算
    	2.不同对象的hashCode()一般来说不会相同。
    		但是,同一对象的hashCode()值肯定相同。
    	3.不是对象的实际地址值,可以理解为逻辑地址值
    
    • Object类的getClass()方法

    public final Class getClass()
    	1.返回此Object的运行时类。
    	2.可通过Class类中的一个方法,获取对象的真实类的全名称
    	public String getName()
    	/*Object.java-----Object.class-----当Object.class加载进内存,他会把Object.class也看做对象,所以会创建字节码文件对象
                    ---- 我们可以通过 getClass()方法,来获取字节码文件对象
    
                    Class 这个就是描述 字节码文件类型的 。
    	*/
    	同一类的getClass()是相同的
    
    • Object类的toString()方法

    public String toString()
    	1.返回该对象的字符串表示
    	public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
        2.它的值等于:
        	getClass().getName() + "@" + Integer.toHexString(hashCode());
        3.由于默认情况下的数据对我们来说没有意义,一般建议重写该方法。
        	一般情况是将该类所有的成员变量组成返回即可
        4.直接输出对象的名称,就是调用toString()方法.
    
    • Object类的equals()放法

    public boolean equals(Object obj){
        return (this==obj);
    }
    	1.指示其他对象是否与此对象“相等”。
    	2.默认情况下比较的是对象的引用是否相同。
    	3.由于比较对象的引用没有意义,一般建议重写该方法。一般用于比较成员变量的值是否相等。
    	4.equals()和==的区别
    		==比较基本数据类型是比较两个数据的值是否相等,比较引用数据类型是比较地址值是否相等,equals()方法如果没有被重写就是表两个对象是否是同一个对象,如果被重写就根据重写的内容执行
    
    • Object类的clone()方法

    clone()方法的权限修饰符是受保护的,在用的时候,让该类重写该方法,并且把方法的权限修饰符改为public
    @Override
    public Object clone() throws CloneNotSupportedException {
            return super.clone();
    }
    使用clone()方法采用的是对象的浅克隆方式
    对象浅克隆的注意事项:
    	1.如果一个对象要调用clone()的方法克隆,那么该对象所属的类必须要实现Cloneable接口
    	class Dog implements Cloneable{}
    	2.Cloneable接口只不过是一个表示接口而已,没有任何方法
    	3.对象的浅克隆:就是克隆一个对象的时候,如过被克隆的对象中维护了另一个类的对象,这时候只是克隆另一个对象的地址,而没有把另一个对象也克隆一份。
    	4.对象的浅克隆不会调用到构造方法
    
上一篇:SDL2.0的VS开发环境搭建


下一篇:java.lang.Object.hashCode()方法