0
点赞
收藏
分享

微信扫一扫

【小六壬占卜代码】

Hyggelook 2024-09-24 阅读 17

Java数据类型分为基本数据类型和引用类型,基本数据类型可以直接比较大小,对于引用类型的变量不能直接比较。下面来讲解Java对象的比较。

目录

equals比较

 Comparble接口类的比较

基于比较器比较


equals比较

 equals是Object类中的方法,只能判断引用类型。默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。 

public class Student {

    public int age;
    public String name;
    
    public Student(int age, String name) {
        this.age = age;
        this.name = name;
    }

    @Override
    public boolean equals(Object obj) {
//将自己与自己比较,地址相同内容一定相同
        if(this==obj)
            return true;
//判断是否为Student类
        if(obj instanceof Student) {
//向下转型
            Student s = (Student) obj;
            return s.age==this.age&&this.name.equals(s.name);
        }else
//不是Student类,返回false
            return false;
    }
}
public class Test {
    public static void main(String[] args) {
        Student student1=new Student(18,"xiaohei");
        Student student2=new Student(18,"xpaohei");

        System.out.println(student1.equals(student2));
    }
}

equals与==区分点

 Comparble接口类的比较

实现Comparble接口可用于比较用户自定义类型,并重写compareTo方法

基于比较器比较

按照比较器方式进行比较,具体步骤如下:

  • 用户自定义比较器类,实现Comparator接口

注意:区分ComparableComparator 

  •  覆写Comparator中的compare方法

总体代码:

public class Student {

    public int age;
    public String name;

    public Student(int age, String name) {
        this.age = age;
        this.name = name;
    }

}

public class StudentCompare implements Comparator<Student> {
    @Override
    public int compare(Student o1, Student o2) {
        return o1.name.compareTo(o2.name);
    }
}

public class Test {
    public static void main(String[] args) {
        Student student1=new Student(18,"aiaohei");
        Student student2=new Student(19,"aiaohei");

        StudentCompare s=new StudentCompare();
        
        System.out.println(s.compare(student1, student2));
    }
}

Comparable.compareTo与Comparator.compare区分

举报

相关推荐

0 条评论