zoukankan      html  css  js  c++  java
  • Java Object part1

       java中Object是所有类的父类,这句话就不多做解释。但是Object中到底有哪些我们常用的方法呢? 
    1. public native int hashCode(); 
        这个方法是一个native方法,也就是说它是用C/C++完成,返回一个int类型的哈希码,这个hashcode用来干什么呢?用来标注这个对象的唯一性。 
        这里doc上有两句话这么描述: 
        如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。 
        如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。 
        有兴趣的同学可以研究一下hash的问题,如果是计算机专业的应该还记得hash是怎么回事! 

    2.public boolean equals(Object obj) 
        根据上面的一句话我们可以知道这个equals比较的就是hashcode。 
        但是String中比较的却是字符串的内容,这是因为String覆写了equals方法。所以String和StringBuffer的equals是不同的。 

    3. protected native Object clone() throws CloneNotSupportedException; 
        clone方法在doc中最值得注意的一句话是; 
        首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。注意,所有的数组都被视为实现接口 Cloneable。否则,此方法会创建此对象的类的一个新实例,并像通过分配那样,严格使用此对象相应字段的内容初始化该对象的所有字段;这些字段的内容没有被自我复制。所以,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。 
        这句话明确的告诉了我们什么叫做浅表复制,和深层复制。对于一些问题的理解很有帮助。 
        这里插入一个创建模式:原型模式 
        用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 
        就是使用clone()方法完成的。 

    4.public String toString()
     { 
    return getClass().getName() + "@" + Integer.toHexString(hashCode()); 
        } 
        返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。 
        如果没有重写这个方法,那么返回的就是个classname@hashcode的形式。 


        其他的就是3个多线程方法和一个protected的finalize()以及一个private的本地registerNatives方法。 



        当然还有一个非常重要的方法:public final native Class<?> getClass(); 
        这个方法就能返回每个对象的Class对象。也就是该类的类对象。通过这个方法我们就能找得到对象的Class对象并且完成反射。 
        另外我们还能通过类的全名:Class.forName("jdbc.oracle.OracleDriver")来实例化类的Class对象。 
        或者我们使用 类.class也可以获得Class的实例化对象。

  • 相关阅读:
    数据库中总结2
    PyMySQL的基本使用
    数据库总结
    并发编程之多线程
    并发编程之多进程知识
    并发编程之多进程
    操作系统基础知识
    模块二总结
    Python函数进阶
    文件操作
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/6605723.html
Copyright © 2011-2022 走看看