5-7面向对象编程(中)----“==”操作符与equals()方法练习

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

package exer4;
 
public class OrderTest {
 public static void main(String[] args) {
  Order o1 = new Order(1001, "AA");
  Order o2 = new Order(1002, "BB");
  System.out.println(o1.equals(o2));
  Order o3 = new Order(1002, "BB");
  System.out.println(o2.equals(o3));
 
//  String s1 = "BB";
//  String s2 = "BB";
//  System.out.println(s1 == s2);//常量池的一个特点,相同的量指向同一个值
 }
}
 
class Order {
 private int orderld;
 private String orderName;
 
 public Order() {
  super();
 }
 
 public Order(int orderld, String orderName) {
  super();
  this.orderld = orderld;
  this.orderName = orderName;
 }
 
 public int getOrderld() {
  return orderld;
 }
 
 public void setOrderld(int orderld) {
  this.orderld = orderld;
 }
 
 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;
   return this.orderld == order.orderld && this.orderName.equals(order.orderName);
  }
  return false;
 
 }
}

输出:

false
true

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

package exer4;
 
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"); // m1 != m2
  }
  if (m1.equals(m2)) {
   System.out.println("m1 is equal to m2");// m1 is equal to m2
  } else {
   System.out.println("m1 is not equal to m2");
  }
 }
}
 
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;
   return this.day == mydate.day && this.month == mydate.month && this.year == mydate.year;
  }
  return false;
 }
}
m1!=m2
m1 is equal to m2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YY鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值