回忆一遥远 发表于 2017-8-16 09:47:00

0基础学习Java ——Object 对象(下)

本帖最后由 回忆一遥远 于 2017-8-16 09:51 编辑

Object 对象
Java 中所有的类都直接或间接继承 Object ,因此都有如下方法
getClass();
hashCode();
equals(Object obj);
clone();
toString();
notify();
notifyAll();
wait();
finalize();


clone
protected Object clone()
                throws CloneNotSupportedException
创建并返回这个对象的一个副本。(默认浅拷贝)
    /**
   * @return   a clone of this instance.
   * @throwsCloneNotSupportedExceptionif the object's class does not
   *               support the {@code Cloneable} interface. Subclasses
   *               that override the {@code clone} method can also
   *               throw this exception to indicate that an instance cannot
   *               be cloned.
   * @see java.lang.Cloneable
   */
    protected native Object clone() throws CloneNotSupportedException;

例如:
class Test1 implements Cloneable{
        int num;
        String s = "初始值";
        Test1(int temp){
                num = temp;
                System.out.println("num = " + num);
        }

        Test1(String temp){
                System.out.println("s = " + temp);
                s = temp;
        }

        Test1(String s, int n){
                this(n);
                // 构造器中调用构造器!
                this.s = s;
                System.out.println("String and int args");
        }

        void Pain(){
                System.out.println("num = " + num + " s = " + s);
        }
       
        @Override
    protected Object clone() throws CloneNotSupportedException {
      return super.clone();
    }
}

public class Test {
        public static void main(String[] args) throws CloneNotSupportedException{
                Test1 p = new Test1("oh", 76);
                Test1 i = (Test1)p.clone();
                i.Pain();
        }
}

输出:
num = 76
String and int args
num = 76 s = oh
clone 需要在类中重写后才能调用



toString();
返回该对象的字符串表示形式
    public String toString() {
      return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
在不重载的情况下, toString(); 语句就是按照上面的方法做的


(1).对象不一定会被回收。
(2).垃圾回收不是析构函数。
(3).垃圾回收只与内存有关。
(4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。
引用链接:http://blog.csdn.net/carolzhang8406/article/details/6705831



线程相关方法
notify
不能重载,作用是唤醒一个等待(暂停)的线程


notifyAll();
唤醒所有等待(暂停)的线程


wait();
暂停该线程


finalize();
垃圾回收器准备释放内存时调用 finalize();






以上就是 Object 对象拥有的方法了,因为后面实例很长,就不放了






页: [1]
查看完整版本: 0基础学习Java ——Object 对象(下)