• Object类常用方法


    1、hashCode()方法示例

     1 public class StringDemo {    
     2     public static void main(String[] args){
     3         Student student = new Student();
     4         System.out.println(student);
     5         System.out.println(student.hashCode());
     6     }    
     7 }
     8 
     9 class Student{
    10     String name = "FZY";
    11 }

    ● 结果:Student@324e68fb     //打印的地址值

          843999483     //打印哈希算法后的地址值整值

    ● 注意:这里打印的不是对象的实际地址值,可以理解为逻辑地址值

    2、getClass()方法示例

     1 public class StringDemo {    
     2     public static void main(String[] args){
     3         Student student = new Student();
     4         Class clazz = student.getClass();//获取该对象的字节码文件
     5         System.out.println(clazz);//打印字节码文件
     6         System.out.println(clazz.getName());//打印字节码文件名
     7     }    
     8 }
     9 
    10 class Student{
    11     String name = "FZY";
    12 }

    ● 结果:class Student  //该对象的字节码文件

         Student      //字节码文件名

    3、toString()方法示例

    ● 源代码:

    1 public String toString() {
    2         return getClass().getName() + "@" + Integer.toHexString(hashCode());
    3 }

    由于 Object 中的 toString() 方法没有任何实际意义,所以子类通常会重写 toString()方法。

     1 public class StringDemo {    
     2     public static void main(String[] args){
     3         Student student = new Student();
     4         System.out.println(student.toString());
     5     }    
     6 }
     7 
     8 class Student{
     9     String name = "FZY";
    10     @Override
    11     public String toString() {
    12         return "Student [name=" + name + "]";
    13     }
    14 }

    ● 结果:Student [name=FZY]  //重写 toString() 方法后打印的结果

    4、equals()方法示例

    ● 源代码:

    1     public boolean equals(Object obj) {
    2         return (this == obj);
    3     }

    ●示例:

     1 public class StringDemo {    
     2     public static void main(String[] args){
     3         Student student1 = new Student();
     4         Student student2 = new Student();
     5         boolean b = student1.equals(student2);
     6         System.out.println(b);
     7     }    
     8 }
     9 
    10 class Student{
    11     
    12 }

    ● 结果:false

    ● 注:比较地址值,和“==”效果一样,一般没有意义,需要重写equals()方法

    ● 重写 equals()方法示例:

     1 public class StringDemo {    
     2     public static void main(String[] args){
     3         Student student1 = new Student("小红",10);
     4         Student student2 = new Student("小红",10);
     5         boolean b = student1.equals(student2);
     6         System.out.println(b);
     7     }    
     8 }
     9 
    10 class Student{
    11     String name;
    12     int age;
    13     public Student(){    
    14     }
    15     public Student(String name, int age) {
    16         this.name = name;
    17         this.age = age;
    18     }
    19     @Override
    20     public boolean equals(Object obj) {
    21         if(obj == null){//判断对象是否为空
    22             return false;
    23         }
    24         if(this == obj){
    25             return true;
    26         }
    27         if(!(obj instanceof Student)){
    28             return false;
    29         }
    30         Student student = (Student)obj;//向下转型
    31         return this.age == student.age && this.name.equals(student.name);
    32     }
    33 }

    ● 结果:true  //重写equals方法是比较成员变量的值相等

    ● 注意:==和equals区别

      ==是一个比较运算符,可以比较基本数据类型的值和引用数据类型的地址值;
      equals是个方法,只能比较引用数据类型,没有重写是Object类中的equals方法,和==号比较引用数据类型无区别,重写后的equals方法是比较对象中的属性。

    ● instanceof关键字:判断这个引用是否为该类型的引用

  • 相关阅读:
    推销
    5132. 颜色交替的最短路径
    5130. 等价多米诺骨牌对的数量
    @babel/plugin-transform-runtime和@babel/preset-env的区别
    5128. 最深叶节点的最近公共祖先(二叉树)
    1094. 拼车
    1109. 航班预订统计(数组)
    5129. 表现良好的最长时间段(数组)
    path.resove 和 path.join
    【原生】 call、apply、bind 的基本使用方法,已经解析了某些源码
  • 原文地址:https://www.cnblogs.com/fanyizhan/p/10020147.html
Copyright © 2020-2023  润新知