• 类的始祖Object


    一、概述

         Object时java中顶级父类,也是唯一没有父类的类;它是整个java中最基本的类,在java中所有的类都默认继承了Object。

    二、重要方法

        1、clone方法

              克隆出一个新的对象。

              使用clone方法时的注意点:

    1. 在使用这个方法的时候,需要抛出一个异常;
    2. 需要对应的类实现Cloneable接口;
    3. clone使用protected修饰,需要注意其使用范围;只能在本类、继承子类和同包类中使用;由于Object和子类不同包,相当于只能在子类中使用了。

          2、finalize方法

              通知GC进行垃圾对象的回收,但是GC不一定会执行,通知完成之后GC会进行内存的扫描。

          3、hashCode方法

              计算对象的哈希码。哈希码时根据哈希散列算法计算出来的。一般人为的认为每个对象的哈希码是唯一的。

          4、toString方法

               将对象转化为字符串来进行展示。如果直接打印一个对象,那么会默认调用对象的toString方法。

          5、getClass方法

                获取对象的实际类型而不是声明类型。

          6、equals方法

               判断两个对象是否相等。如果不重写,那么默认判断两个对象的地址是否一致。实际开发中旺旺需要重写。重写步骤如下:

    1. 判断地址是否一致;
    2. 判断参数是否为空;
    3. 判断类型是否一致;
    4. 判断属性是否一致:如果是基本类型,可以直接比较;如果是引用类型则需要多个判断。

         示例如下:

    class User {
        public int  System = 5;
        private String userName;
        private String password;
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
        @Override
        public boolean equals(Object obj) {
            //判断地址是否一致
            if(this == obj) {
                return true;
            }
            //判断是否为null
            if(obj == null) {
                return false;
            }
            //判断类型是否一致
            if(this.getClass() != obj.getClass())
                return false;
            //判断对象的属性
            User us = (User)obj;
            //判断对象的名称
            if(this.userName == null) {
                if(us.userName != null) {
                    return false;
                }
            } else if(!this.userName.equals(us.userName)) {
                return false;
            }
            //判断对象的密码
            if(this.password == null) {
                if(us.password != null) {
                    return false;
                }
            } else if(!this.password.equals(us.password)) {
                return false;
            }
            
            return true;
        }
    }
    public class ObjectExer {
        public static void main(String[] args) {
            User us = new User();
            us.setUserName("张三");
            us.setPassword("1234");
            User us1 = new User();
            us1.setUserName("张三");
            us1.setPassword("1234");    
        }
    }

      

  • 相关阅读:
    时间序列表示
    Resnet——深度残差网络(二)
    Resnet——深度残差网络(一)
    基于tensorflow2.0和cifar100的VGG13网络训练
    Android实战项目——家庭记账本(七)
    iOS-基于TCP连接<Scoket-客户端>
    Xcode更新到10.0之后遇到的那些坑:
    cell右侧的状态(accessoryType)
    2020最新cocoapods详细安装和使用
    AFNetworking上传一张或多张图片,并压缩图片节约占用内存
  • 原文地址:https://www.cnblogs.com/chhyan-dream/p/10714773.html
Copyright © 2020-2023  润新知