Object类的使用:equals()和toString()

一、equals()方法

1、编写 Order 类,有 int 型的 orderId String 型 的 orderName ,相应的getter() 和 setter() 方法,两个参数的构造器,重写父类的equals() 方法:public boolean equals(Object obj )并判断测试类中创建的两个对象是否相等。

(1)编写 Order 类

public class Order {
       private int orderid;
       private String orderName;
       public Order(int orderid,String orderName){
    	     this.orderid=orderid;
    	     this.orderName=orderName;
       }
	public int getOrderid() {
		return orderid;
	}
	public void setOrderid(int orderid) {
		this.orderid = orderid;
	}
	public String getOrderName() {
		return orderName;
	}
	public void setOrderName(String orderName) {
		this.orderName = orderName;
	}
       @Override
    public boolean equals(Object obj) {
           if(this==obj){
        	  return true;
          }
          if(obj instanceof Order){
        	  Order order=(Order)obj;
        	  if(this.orderid==order.orderid &&this.orderName.equals(order.orderName)){
        		  return true;
        	  }else{
        		  return false;
        	  }
          }else{
        	  return false;
          }
    }
}

(2)编写测试类

public class OrderTest {
    public static void main(String[] args) {
		Order o1=new Order(12, "a");
		Order o2=new Order(12,"a");
		boolean result=o1.equals(o2);
		System.out.println(result);
	}
}

2.请根据以下代码自行定义能满足需要的 MyDate 类 在 MyDate 类中覆盖equals 方法,使其判断当两个 MyDate 类型对象的年月日都相时,结果为 true,否则为 false。

public class MyDateTest {
    public static void main(String[] args) {
	MyDate m1=new MyDate(14, 3, 1976);
	MyDate m2=new MyDate(14, 3, 1976);
	if(m1==m2){
		System.out.println("m1=m2");
	}else{
		System.out.println("m1!=m2");
	}
	if(m1.equals(m2)){
		System.out.println("m1 is equal to m2");
	}else{
		System.out.println("m1 is not equal to m2");
	}
}
}

定义MyDate类,对equals()进行重写

public class MyDate {
		 private int day;
		 private int month;
		 private int year;
		public MyDate(int day, int month, int year) {
			super();
			this.day= day;
			this.month = month;
			this.year = year;
		}
		public int getDay() {
			return day;
		}
		public void setDay(int day) {
			this.day = day;
		}
		public int getMonth() {
			return month;
		}
		public void setMonth(int month) {
			this.month = month;
		}
		public int getYear() {
			return year;
		}
		public void setYear(int year) {
			this.year = year;
		}
		 @Override
		public boolean equals(Object obj) {
	        if(this==obj){
	        	return true;
	        }
	        if(obj instanceof MyDate){
	        	MyDate mydate=(MyDate)obj;
	        	if(this.day==mydate.day && this.month==mydate.month && this.year==mydate.year){
	        		return true;
	        	}else{
	        		return false;
	        	}
	        }else{
	        	return false;
	        }
		}
	}

二、toString()方法

定义两个类,父类 GeometricObject 代表几何形状,子类 Circle 代表圆形。

 

(1)定义两个类:父类 GeometricObject和子类 Circle。

public class GeometricObject {
      protected String color;
      protected double weight;
      
	public GeometricObject() {
		super();
		this.color="white";
		this.weight=1.0;
	}

	public GeometricObject(String color, double weight) {
		super();
		this.color = color;
		this.weight = weight;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public double getWeight() {
		return weight;
	}

	public void setWeight(double weight) {
		this.weight = weight;
	}
	
      
}
public class Circle extends GeometricObject{
      private double radius;
//***********constructor
	public Circle() {
		super();
		//this.color="white";
		//this.weight=1.0;
		this.radius=1.0;
	}
	public Circle(double radius) {
		super();
		this.radius = radius;
		//this.color="white";
		//this.weight=1.0;
	}
	public Circle(double radius,String color,double weight) {
		super(color, weight);
		this.radius = radius;
		//this.color=color;
		//this.weight=weight;
	}
	//*************method
	public double getRadius() {
		return radius;
	}
	public void setRadius(double radius) {
		this.radius = radius;
	}
	public double findArea(){
		return Math.PI*radius*radius;
	}
	@Override
	public boolean equals(Object obj) {
      if(this==obj){
    	  return true;
      }
      if(obj instanceof Circle){
    	  Circle c=(Circle)obj;
    	  if(c.radius==this.radius){
    		  return true;
    	  }else{
    		  return false;
    	  }
      }else{
    	  return false;
      }
	}
	@Override
	public String toString() {
         return "radius="+this.radius;
	}
}

(2)定义测试类进行测试

public class CircleTest {
public static void main(String[] args) {
	Circle c1=new Circle(2.2);
	Circle c2=new Circle(2.1,"red",2.0);
	System.out.println("颜色是否相等:"+(c1.getColor().equals(c2.getColor())));
	boolean isEqual=c1.equals(c2);
	System.out.println("半径是否相等:"+isEqual);
	System.out.println("c1的半径:"+c1.toString());
	System.out.println("c2的半径:"+c2.toString());
}
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值