Java语言基础-Object类

object类的使用

object类是所有Java类的根父类。
如果在定义Java类中没有使用extends关键字指明父类,默认父类都是java.lang.object类。

在文档中写明object类在jdk1.0时就作为所有类的父类来使用。
内部没有定义多余的属性。
只有一个无参构造器。
但是有很多经常使用的方法,本文主要阐述这些常用方法。

clone()

克隆方法

语法:
对象类型 对象名 = (对象类型) 克隆对象名.clone();
Animal a2 = (Animal) a1.clone;
animal 是一个假象类,我们最开始实例化一个叫做a1的Animal对象,然后使用clone方法克隆一个叫做a2的Animal对象。修改a2的属性值不会影响a1。类似于深拷贝。

equals()

比较字符串
讲述equalse的一篇文章

finalize()

回收对象。
不建议使用这个方法,应该让Java自身的垃圾回收机制去回收。
强制垃圾回收前会自动调用该方法。

getclass()

查看自己是哪个类构造的。

hashcode()

返回当前对象的hash值

tostring
package com.advan.equal;

import java.util.Date;

public class ToStringTest {
    public static void main(String[] args) {
        Customer cust1 = new Customer("Tom",10);
        System.out.println(cust1);              // com.advan.equal.Customer@15db9742
        System.out.println(cust1.toString());   // com.advan.equal.Customer@15db9742
        // 他们输出的结果一样,然后我们来看一下toString的源码
        // public String toString() {
        //     return getClass().getName() + "@" + Integer.toHexString(hashCode());
        // }
        // 他是由三部分拼接而成:类名+@+虚拟内存地址  虚拟内存地址是在jvm中分配的,不是真实的
        // 然后比较一下string
        // 然后我们重写一下Customer类的toString方法。

        String str = new String("haha");
        System.out.println(str);            // haha
        System.out.println(str.toString()); // haha

        // public String toString() {
        //     return this;
        // }
        // String类的toString方法直接将对象本身返回
        
        Date date = new Date();
        System.out.println(date);
        System.out.println(date.toString());

        // public String toString() {
        //     // "EEE MMM dd HH:mm:ss zzz yyyy";
        //     BaseCalendar.Date date = normalize();
        //     StringBuilder sb = new StringBuilder(28);
        //     int index = date.getDayOfWeek();
        //     if (index == BaseCalendar.SUNDAY) {
        //         index = 8;
        //     }
        //     convertToAbbr(sb, wtb[index]).append(' ');                        // EEE
        //     convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' ');  // MMM
        //     CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd
    
        //     CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':');   // HH
        //     CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm
        //     CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss
        //     TimeZone zi = date.getZone();
        //     if (zi != null) {
        //         sb.append(zi.getDisplayName(date.isDaylightTime(), TimeZone.SHORT, Locale.US)); // zzz
        //     } else {
        //         sb.append("GMT");
        //     }
        //     sb.append(' ').append(date.getYear());  // yyyy
        //     return sb.toString();
        // }
        // Date的toString虽然看起来很复杂,但是最后返回的是 sb.toString();
        // 而 sb 的声明是: StringBuilder sb = new StringBuilder(28);  也是一个 StringBuilder 对象
        // 也就是Date类的toString 只是得到当前时间后经过了一些美化再原样输出。
    }


class Customer{
    String name;
    int age;

    public Customer(String name,int age){
        this.name = name;
        this.age = age;
    }

    // 在我们定义的类里面重写一下equals方法。
    @Override   // 表示重写
    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof Customer) {
            Customer ancust = (Customer)anObject;
            return this.name.equals(ancust.name) && this.age == ancust.age;
        }
        return false;
    }

    @Override
    public String toString() {
        return "name:"+this.name+"age:"+this.age;
    }
}
notify()/notifyAll()/wait()

涉及线程

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读