• Java 中equals和toString()方法重写


    1,equals方法

    (1)什么时候需要重写?

      如果希望不同内存但相同内容的两个对象equals时返回true,则需要重写equals

    (2)怎么重写?

    class A
    { public int i;
      pulic A(int i)//构造函数
       {this.i=i;
       }
      public boolean equals(Object obj)//重写equals
       {A aa=(A)obj;
        if(this.i==aa.i)
          return true;
        else
         return flase;
       }
    }
    public class testEquals{
     public staric void main(String[] args){
       A aa1=new A(10);
       A aa2=new A(10);
       System.out.println(aa1.equals(aa2));
     }
    }

    (3)注意问题:

    String类系统已经重写equals了,不必再重写;

    另外区分equals和==

    public class extendsPrivateTest {

    public static void main(String[] args){  

        String str1=new String("China");

        String str2=new String("China");  

       System.out.println(str1.equals(str2));

       System.out.println(str1==str2);

        String str3="China";

        String str4="China";  

       System.out.println(str3.equals(str4));  

       System.out.println(str3==str4);  } }

     str1和str2放在堆里

    true//equals已经被系统重写

    false

    str3和str4是放在数据区,都是指向一个数据

    true

    true

    2.toString方法

    (1)为什么需要重写toString?

    Object类中的toString方法返回的是类的名字和该对象的哈希码组成的一个字符串,例,A@deced

    而我们实际想用System.out.printf(类对象名)输出该对象的toStringd()方法返回的字符串不是上述的时,就必须重写toSring方法。

    (2)怎么重写toString方法?

    注意:为了实际需要,建议子类重写从父类Object继承的toString()方法

    class Point{
      private int i,j;
      puvlic Point(int i,int j){
       this.i=i;
       this.j=j;
      }
      public String toString(){
       return "["+i+","+j+"]";
      }
    }
    public class testtoString{
      public static void main(String[] args){
         Point p1=new Point(1,3);
         System.out.println(p1);
      }
    }
  • 相关阅读:
    js实现小球碰撞游戏
    jquery实现简易的计算器
    js中的substr和substring区别
    学习笔记:模拟退火
    解题报告:luogu P4879
    解题报告:CF58C
    解题报告:luogu P1160
    解题报告:CF1244D
    学习笔记:三分法(唔,好像不是唉)
    解题报告: CF1288C
  • 原文地址:https://www.cnblogs.com/xiaoxiaohui2015/p/5424581.html
Copyright © 2020-2023  润新知