• 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关键字:判断这个引用是否为该类型的引用

  • 相关阅读:
    CShop Project 082: 获取分页数据模型并传递到页面上
    CShop Project 08: 展示不同类型的商品
    CShop Project 08: 开发商品分类的查询和展示
    119 类和数据类型
    118 对象的绑定方法
    117 对象的属性查找顺序
    116 定制对象独有特征
    115 类和对象
    114 面向对象编程介绍
    113 面向对象程序设计的由来(了解)
  • 原文地址:https://www.cnblogs.com/fanyizhan/p/10020147.html
Copyright © 2020-2023  润新知