首页 > 其他分享 >Day31:Object类常用方法

Day31:Object类常用方法

时间:2022-12-05 00:12:43浏览次数:35  
标签:常用 name Students age Object Day31 st1 public String

Object类

1.1 Object概述

Object类是所有类的超类、根类,基类;

任何类直接或间接地继承Object类;

所有对象都具备Object的方法;

Object作为参数可以接受任何对象,作为返回值可以返回任何对象。

1.2 getClass()方法

  • getClass()方法用来获取调用者所属的类型;

  • 通常在判断两个对象的引用类型是否一致。

  • public final native Class<?> getClass(){};

  • getClass()方法返回的是调用者所属的类

//创建一个学生类
public class Students{
    private String name;
    private String age;
    
    public Students(){}
    public Students(String name,String age){
        this.name=name;
        this.age=age;
    }
    
    public void setName(String name){
        this.name=name;
    }
    public void setAge(String age){
        this.age=age;
    }
    
    public String getName(){
        return name;
    }
    public String getAge(){
        return age;
    }
}
//创建测试类
public class Test{
    public static void main(String[] args){
        Students st1=new Students();
        Students st2=new Students();//创建两个对象
        
        Class c1=st1.getClass();
        Class c2=st2.getClass();//getClass方法返回的是调用者对象的类型
        
        if(c1==c2){////getClass方法多用于判断两者是否为同一类型
            System.out.println("st1和st2类型一致");
        }else{
            System.out.println("st1和st2类型不一致");
        }
    }
}

1.3 hashCode()方法

  • public native int hashCode(){};

  • hashCode()方法返回调用者的哈希码值。

  • 哈希码值是根据对象的地址字符串数字使用hash算法计算出来的int类型的数值。

  • 相同对象返回的相同哈希码

//创建测试类
public class Test{
    public static void main(String[] args){
        Students st1=new Students();
        Students st2=new Students();//创建两个对象
        System.out.println(st1.hashCode);
        System.out.println(st2.hashCode);
        //对象内存不一致、哈希码值也不一样
        
        Students st3=st1;//st1的内存地址赋值给了st3
        
        if(st3.hashCode==st1.hashCode){
            System.out.println("st1和st2哈希码值一致");
        }else{
            System.out.println("st1和st2哈希码值不一致");
        }
    }
}

1.4 toString()方法

  • //object中的toString()方法
    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
    
  • toString()方法返回的是描述调用者对象的字符串;默认情况下返回的是一个由该对象所属的类名、@符号以及十六位进制的内存地址

  • 可以在对象的类中重写toString()方法,以此让外部调用对象的toString()方法时可以展示其各个属性值。

//创建学生类
public class Students{
    private String name;
    private String age;
    
    public Students(){}
    public Students(String name,String age){
        this.name=name;
        this,age=age;
    }
    
    public void setName(String name){
        this.name=name;
    }
    public void setAge(String age){
        this.age=age
    }
    public String getName(){
        return name;
    }
    public String getAge(){
        returen age;
    }
    
    @override//快捷键ALT+INS生成  
    public String toString(){
        return "Students{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
    
}
//测试类
public class Test{
    public static void main(String[] args){
        Students st1=new Students();
        Students st2=new Students();//创建两个对象
        /*
        System.out.println(st1.toString());
        System.out.println(st2.toString());
        当学生类没有重写toString方法时,输出
        com.liuwei.API.ObjectDemo.Students@1b6d3586
        com.liuwei.API.ObjectDemo.Students@4554617c
        */

        //当我们在学生类中重写toString方法
        st1.setName("工地佬");
        st1.setAge("25");
        System.out.println(st1.toString());
        //输出结果
        //Students{name='工地佬', age='25'}
}

1.5 equals()方法

  • ////object中的equals()方法
    public boolean equals(Object obj) {
          return (this == obj);
    }
    
  • equals()方法默认比较的是两者的对象地址

  • 当我们在对象类中重写equals()方法后,外部调用对象的equals()方法便成为比较对象的内容

//创建学生类
public class Students{
    private String name;
    private String age;
    
    public Students(){}
    public Students(String name,String age){
        this.name=name;
        this,age=age;
    }
    
    public void setName(String name){
        this.name=name;
    }
    public void setAge(String age){
        this.age=age
    }
    public String getName(){
        return name;
    }
    public String getAge(){
        returen age;
    }
    
    @override//快捷键ALT+INS生成  
    public String toString(){
        return "Students{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
        @Override
    public boolean equals(Object o) {
        if (this == o) return true;//判断两个对象引用是否相同,若一致,则对象一致,内容也就一样
        if (o == null || getClass() != o.getClass()) return false;//判断被比较对象是否为空值,或者两个对象类名不同则为false
        Students students = (Students) o;//强制转换
        return Objects.equals(name, students.name) && Objects.equals(age, students.age);//匹配内容
    }
    
    
}
//测试类
public class Test{
    public static void main(String[] args){
        //equals()方法
        System.out.println(st1.equals(st2));
        //默认条件下的equals方法对于基础类型是比较值,对象类型是比较内存地址

        //我们可以通过在类里重写equals方法,使得对象在调用equals方法时比较的是内容
        Students st5 = new Students("牛马", "25");
        Students st4= new Students("牛马", "25");
        System.out.println(st4.equals(st5));//true
        //当我们在重写引用对象的类中重写equals方法后,将比较的是两个对象的内容

    }
}

标签:常用,name,Students,age,Object,Day31,st1,public,String
From: https://www.cnblogs.com/CQliuwei/p/16951266.html

相关文章

  • 火力全开,优化 python 量化日行情数据下载以及常用指标计算速度
    火力全开,优化python量化日行情数据下载以及常用指标计算速度今天做了个异步协程的测试,结果有点失望,多进程+协程并没有提高io密集型任务请求的效率。至于为什么,原因......
  • Python中的字符串常用处理方法
    字符串字符串就是一系列的字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号,如下所示:"Thisisastring."'Thisisalsoastring.'这种......
  • Windows CMD常用命令
    Linux上主要操作是命令,懂一点linux知识的都知道,其实windows下边很多工具也是可以用命令来操作打开的,这样会提高效率,节省很多的时间。下边就记录一下常用的命令。一、常用......
  • 常用命令_主机状态监控
    top =p#只显示某个进程的信息 -d#设置刷新时间 -c#显示产生进程的完整命令 -n#指定刷新次数 -b#以非交互全屏模式运行,top-b-n3>/tmp/test.log -i#......
  • LeetCode刷题记录.Day31
    二叉树的层序遍历递归法classSolution{public:voidorder(TreeNode*cur,vector<vector<int>>&result,intdepth){if(cur==nullptr)retur......
  • 快来领取,33个常用JavaScript功能已封装成方法,拿来即用
    在实际开发中,为了提高开发的效率,我们会把常用到的功能封装成方法,这样后期开发需要,拿来即用。 这里分享33个在实际开发中经常需要用到的功能(已封装成方法),分享给到大家......
  • day31-JQuery04
    JQuery046.jQuery的DOM操作026.9常用遍历节点方法取得匹配元素的所有子元素组成的集合:children(),该方法只考虑子元素而不考虑任何后代元素取得匹配元素后面的同辈......
  • python字符串常用方法介绍,基于python3.10
     python字符串常用方法-目录:1、strip()、lstrip()、rstrip()2、removeprefix()、removesuffix()3、replace()4、split()、rsplit()5、join()6、upper()、lower()、capita......
  • Java中常用容器总结
    1、Collection接口数据都是单个单个的存储在其中的。常用方法:boolean  add(Objectelement)  添加元素boolean  remov......
  • 整理 js 日期对象的详细功能,使用 js 日期对象获取具体日期、昨天、今天、明天、每月天
    在javascript中内置了一个Date对象,可用于实现一些日期和时间的操作。本文整理js日期对象的详细功能,使用js日期对象获取具体日期、昨天、今天、明天、每月天数、时......