黑马程序员——使用equals实现对象的比较

来源:互联网 发布:联通首选网络类型 编辑:程序博客网 时间:2024/06/05 22:55
---------------------- android培训、java培训、期待与您交流! ----------------------

/*

要比较两个对象是否相等,需要调用object类中equals()方法,如有两对象A,B,但单纯调用equals()方法,如A.equals(B),不论两对象的值是否相等都会返回false,因为此处的equals()调用的是object类中的方法,只提供相当于地址的比较。这样,我们就需要在子类中重写该方法,来实现我们的需求。

*/

public static void main(String[] args) {
  int[] arr = {100, 200, 300, 500, 800, 321, 123, -50, -55};
  Printer.print(arr);
  Printer.print(arr, new EvenFilter());  
  
  // 使用匿名内部类形式, 定义一个过滤器, 打印出大于300的数
 } 
}

class Printer {         // 打印机
 public static void print(int[] arr) {  // 打印int[]中的元素, 打印成一行, 用空格分隔每个元素
  for (int i = 0; i < arr.length; i++)
   System.out.print(arr[i] + " ");
  System.out.println();
 } 
 public static void print(int[] arr, IntFilter filter) {
  for (int i = 0; i < arr.length; i++) // 循环遍历数组
   if (filter.accept(arr[i]))   // 把每一个数传入过滤器, 判断是否要打印
    System.out.print(arr[i] + " ");
  System.out.println();
 }
}

interface IntFilter {  // 过滤器
 boolean accept(int x); // 接收一个int, 返回一个boolean
}

class OddFilter implements IntFilter {   // 奇数过滤器
 public boolean accept(int x) {
  return x % 2 != 0; 
 }
}

class EvenFilter implements IntFilter {   // 偶数过滤器
 public boolean accept(int x) {
  return x % 2 == 0; 
 }
}

 

---------------------- android培训、java培训、期待与您交流! ----------------------