java对象的比较分析

来源:互联网 发布:ios app新闻项目源码 编辑:程序博客网 时间:2024/06/06 15:44
关于对象的比较我们可以通过以下三种手段来实现
一、利用"=="比较引用
Java中,当比较简单类型变量时用"==",只要两个简单类型值相等即返回ture,否则返回false,而在对象的比较中,"=="运算符就是比较引用变量所指向的内存地址是否相同 ;
 
二、通过覆盖equals方法比较引用

User u1=new User("Tom");  User u2=new User("Tom");  User u3=u1;  u3.setName("Jack");  u1==u3//true  u1.equals(u3)//true  u1==u2//false;  u1.equals(u2)//false  

三、重写equals()方法
在Java API中,有些类重写了equals()方法,这些类包括:String、Double、Float、Long、Integer、Short、Byte、、Boolean、BigDecimal、BigInteger等等。

String s1=new String("hello");  String s2=new String("hello");  s1==s2//false,按地址进行比较  s1.equals(s2)//true, 已重写,按值进行比较  

三、手动重写equals方法比较对象
在定义一个类的时候,如果涉及到对象的比较,应该重写equals()方法。
public boolean equals(Object o)  {     //如果和自身比较,返回TRUE     if(this==o) return true;     //如果不是这个类的实例,返回FALSE     if(!o instanceof User) return false;          final User u=(User)o     if(this.getName().equals(u.getName())        return true;     else        return false;  } 

最后给出一个标准的对象比较范例
package javacompareDemo;//对象的比较class person{private String name;private int age;public person(String name,int age){this.name=name;this.age=age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//这里注意,比较操作是应该发生在person类内部函数上的public boolean compare(person per){               if(this==per)return true;if(this.name.equals(per.name)&&this.age==per.age)return true;elsereturn false;}}public class ClassCompare1 {public static void main(String[] args) {person per1 = new person("影流之主",19);person per2 = new person("放逐之刃",18);person per3 = new person("影流之主",19);System.out.println(per1.compare(per2));System.out.println(per1.compare(per3));}}

0 0
原创粉丝点击