做网站首页文字排版技巧,装修网站设计平台,重庆百度seo关键词优化,wordpress 顶部 浮动Java数据类型分为基本数据类型和引用类型#xff0c;基本数据类型可以直接比较大小#xff0c;对于引用类型的变量不能直接比较。下面来讲解Java对象的比较。
目录
equals比较 Comparble接口类的比较
基于比较器比较 equals比较 equals是Object类中的方法#xff0c;只能…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;}Overridepublic boolean equals(Object obj) {
//将自己与自己比较地址相同内容一定相同if(thisobj)return true;
//判断是否为Student类if(obj instanceof Student) {
//向下转型Student s (Student) obj;return s.agethis.agethis.name.equals(s.name);}else
//不是Student类返回falsereturn false;}
}
public class Test {public static void main(String[] args) {Student student1new Student(18,xiaohei);Student student2new Student(18,xpaohei);System.out.println(student1.equals(student2));}
}1. 如果指向同一个对象返回 true 2. 如果传入的对象类型不是 Student 返回 false 3. 按照类的实现目标完成比较例如这里只要年龄和名字一样学生信息就相同 4. 注意下调用其他引用类型的比较也需要 equals 例如这里的 name 的比较 equals与区分点 是一个比较运算符 既可以判断基本类型又可以判断引用类型如果判断类型为基本类型判断的值是否相等如果判断的是引用类型判断的是地址是否相等即是不是同一个对象 Comparble接口类的比较
实现Comparble接口可用于比较用户自定义类型并重写compareTo方法 public class Student implements Comparable {public int age;public String name;public Student(int age, String name) {this.age age;this.name name;}Overridepublic int compareTo(Object o) {Student s (Student) o;return this.age - s.age;}} 基于比较器比较 按照比较器方式进行比较具体步骤如下 用户自定义比较器类实现Comparator接口 public class StudentCompare implements ComparatorStudent {} 注意区分Comparable和Comparator 覆写Comparator中的compare方法 public class StudentCompare implements ComparatorStudent {Overridepublic int compare(Student o1, Student o2) {return o1.name.compareTo(o2.name);}
} 总体代码
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 ComparatorStudent {Overridepublic int compare(Student o1, Student o2) {return o1.name.compareTo(o2.name);}
}public class Test {public static void main(String[] args) {Student student1new Student(18,aiaohei);Student student2new Student(19,aiaohei);StudentCompare snew StudentCompare();System.out.println(s.compare(student1, student2));}
}Comparable.compareTo与Comparator.compare区分 Comparable.compareTo 需要手动实现接口侵入性比较强但一旦实现每次用该类都有顺序属于内部顺序 Comparator.compare 需要实现一个比较器对象对待比较类的侵入性弱但对算法代码实现侵入性强