• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小小慧
博客园    首页    新随笔    联系   管理    订阅  订阅
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);
  }
}

 

posted on 2016-04-23 14:27  小小慧  阅读(4988)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3