玩命加载中 . . .

Object中方法(19)


Object中方法

概述:

  • object中自带方法有(详见文档)

Object方法

toString()方法

  1. 返回该对象的字符串表示

  2. 有时候有的项目SUN公司给的方法不满足于项目需求所以需要重写SUN公司中的方法

    public class ToString {
        String name;
        int age;
    
        ToString(String name,int age) {
            this.name = name;
            this.age = age;
        }
    
        // 重写SUN公司中的Object.lang中的toString的方法
        public String toString() {
            return "toStrimg" + "[name: " + this.name + ",age: " + this.age + "]";
        }
    }
    // 测试类
    class ToStringTest{
        public static void main(String[] args) {
            ToString toString = new ToString("小王",30);
            System.out.println(toString.toString());//-->toStrimg[name: 小王,age: 30]
        }
    }
    

equals(Object obj)方法

  1. 指示其他某个对象是否与此对象“相等”。

  2. object中的equals方法比较的是内存地址,而在现实的业务逻辑当中,不应该比较内存地址,应该比较内容,所以 Object中的 equals方法也要重写

    public class Equals {
        int id; // 定义一个身份证号
        String name;    // 定义一个姓名
    
        // constructor
        public Equals(int id, String name) {
            this.id = id;
            this.name = name;
        }
    
        public static void main(String[] args) {
            Equals equals1 = new Equals(200,"小王");
            Equals equals2 = new Equals(200,"小王");
            System.out.println(equals1.equals(equals2));
    
            // 字符串之间的比较
            String a1= new String("xiaoming");
            String a2 = new String("xiaoming");
            System.out.println(a1 == a2);
            // 如果使用“==”比较字符串返回  ---》 false
            System.out.println(a1.equals(a2));
            // equals方法在Object中比较的是两个内存地址是否相同
            // 但是在String中的equals在String中比较的是内容是否相同(String继承自Object),
            // 说明String重写了父类(Object)中的equals方法
        }
    
        public boolean equals(Object obj) {
            // 如果当前对象和要比较的对象的内存地址相同,则说明这两个对象是相同的(值也是相同的)
            if (this == obj) {
                return true;
            }
    
            // 因为形参中创建的Object中不含有id这个成员变量所以需要父(Object) -----> 子(Equals)向下转型
            // Equals默认继承于Object对象
            if (obj instanceof Equals) {    // 如果这个对象属于Equals这个类
                Equals s = (Equals) obj;
                if (this.id == s.id && this.name.equals(s.name)) {
                // s.name == this.name (关于字符串类型比较的不是内存地址而是字符串是否相同)
                    return true;
                }
            }
            return false;
        }
    }
    

finalize() 方法

  1. System.gc() 运行垃圾回收器。

  2. finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

    public class Finalize {
    
        // 重写Object中的finalize方法
        protected void finalize() throws Throwable {    // 创建要给finalize方法
            // Finalize p = this;
            // 注意: 运行GC不一定回收可以将当前地址引用给其他堆内存中
            System.out.println("垃圾即将被回收");
        }
    
    }
    class test{
        public static void main(String[] args) {
            Finalize finalize1 = new Finalize();
            finalize1 = null;
            // 注意:程序猿只能”建议“GC回收垃圾
            System.gc();
        }
    }
    

hashCode()方法

  1. 返回该对象的哈希码值。支持此方法是为了提高哈希表

    public class HashCode {
        public static void main(String[] args) {
            HashCode hashCode1 = new HashCode();
            // 返回一个哈希值
            System.out.println(hashCode1.hashCode());
        }
    }
    

文章作者: 小靳同学
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小靳同学 !
评论
 上一篇
内部类总结(20) 内部类总结(20)
内部类总结静态内部类 概述: 静态内部类可以等同看作静态方法/变量 作用: 静态内部类可以访问它的外部类中的私有属性和方法 总结
2021-06-13
下一篇 
Git安装及配置(01) Git安装及配置(01)
Git安装及配置 Git概述:​ Git是一个分布式开发的软件,它是由多人协作共同完成一个项目的软件,同时Github也是一个全球最大
2021-06-08
  目录