• 第十六节(Object类(toString() 、finalize、equals方法)


    Object 类类
    
    
    
    
    a) Object 类是所有 Java 类的根基类
    
    
    
    b) 如果在类的声明中未使用 extends 关键字指明其基类,则默认基类为 Object 类
    
    
    toString()
    
    
    返回该对象的字符串表示。 通常 toString 方法会返回一个 “以文本方式表示” 此对象的
    
    字符串,Object 类的 toString 方法返回一个字符串,该字符串由类名加标记 @和此对象哈
    
    希码的无符号十六进制表示组成
    
    
    
    
    /*
        关于Object 中的 toString 方法:
        
            sun在Object类中设计toString方法的目的:返回java对象的字符串的表示形式
        
        在现实开发中,Object里边的toString 方法已经不够用了
        Object的toString方法实现的结果 不满意
        
        Object中的toString方法就是要重写的
        
        sun是这样子实现toString方法的
        
        public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
        
        Object中的toString方法返回: 类名@Java对象的内存地址经过哈希算法得出的int类型值 
        再转换成十六进制
        
        这个输出结果可以等同看做Java对象在堆中的内存地址
        
    
    
    */
    
    public class ObjectTest01{
        
        public static void main(String[] args){
            
            // 创建一个Object类型的对象
            Object o1= new Object();
            
            System.out.println(o1); // java.lang.Object@6af62373
            
            // 调用一个toString方法
            String oStr = o1.toString();
            
            System.out.println(oStr); // java.lang.Object@6af62373
            
            
            // 创建一个Person类型的对象
            Person p1 = new Person("Ming",18);
            
            // 调用toString方法
            String pStr = p1.toString();
            
            System.out.println("p1 = "+p1.toString());
        }
    
    }
    
    class Person{
    
        String name;
        int age;
        
        // Person(){} 默认的空构造
        
        Person(String name,int age){
            this.name = name;
            this.age = age;
        }
        
        // 重写toString方法
        // 根据项目的需求而定
        //  需要显示格式:Person[name=Mingage=18]
        public String toString(){
            return "Person[name="+name+",age="+age+"]";
        }
    
    }
    finalize
    
    
    垃圾回收器(Garbage Collection) ,也叫 GC,垃圾回收器主要有以下特点:
    
    � 当对象不再被程序使用时,垃圾回收器将会将其回收
    
    � 垃圾回收是在后台运行的, 我们无法命令垃圾回收器马上回收资源, 但是我们可以
    
    告诉他,尽快回收资源(System.gc 和 Runtime.getRuntime().gc())
    
    � 垃圾回收器在回收某个对象的时候,首先会调用该对象的 finalize 方法
    
    � GC 主要针对堆内存
    
    � 单例模式的缺点

    /*
        关于Object中的finalize方法
        
            finalize 方法什么时候调用
                1. finalize 方法每一个Java对象都有
                2. finalize 方法不需要程序员去调用,有系统自动调用
                3. Java对象如果没有更多的引用指向它,则该Java对象称为 垃圾数据
                等待垃圾回收器回收,垃圾回收器在回收这个Java对象之前 会自动调用该对象的 finalize方法
    
            finalize 方法是该对象马上就要被回收了,例如:需要释放资源,则可以在该方法中释放
    
    */
    
    public class FinalizeTest01{
        
        public static void  main(String[] args){
            
            People p = new People();
            
            // 没有引用再指向他,等待回收
            p = null;
            
            // 开发者只能”建议“垃圾回收器回收垃圾
            System.gc();
            
        }
    
    }
    
    class People{
        
        public void finalize() throws Throwable{
            
            System.out.println(this+"马上就要被回收了 !");
            
            // 让引用再次重新指向该对象,该对象不是垃圾数据,不会被垃圾回收器回收 !
            People p = this;
            
        }
    
    }
    /*
        关于Object中的equals方法
        
            public boolean equals(Object obj){
                return (this == obj);
            }
            
            
        Object中的equals方法比较的是两个引用的内存地址 
    
        Java对象中的equals方法的设计目的: 判断两个对象是否一样
    
    */
    
    public class EqualsTest{
    
        public static void main(String[] args){
            
            Object o1 = new Object();
            Object o2 = new Object();        
            boolean b1 = o1.equals(o2);      
            System.out.println(b1);
        }
        
    
    }
  • 相关阅读:
    QT正则表达式
    unix网络编程笔记
    网页书签
    trie tree(字典树)
    C++网络爬虫抓取图片
    网络编程——客户端简单流程
    OpenCV系列--摄像头控制的简单代码
    订单号生成雪花算法
    docker 运行tomcat项目
    docker 打包springboot镜像并启动
  • 原文地址:https://www.cnblogs.com/Deng1185246160/p/4230545.html
Copyright © 2020-2023  润新知