鱼C论坛

 找回密码
 立即注册
查看: 3531|回复: 0

[学习笔记] 0基础学习Java ——Object 对象(下)

[复制链接]
发表于 2017-8-16 09:47:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 回忆一遥远 于 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.
     * @throws  CloneNotSupportedException  if 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鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 08:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表