JAVA中==和equals的区别
2015-01-16 22:21
169 查看
关于对象的比较我们可以通过以下三种手段来实现
一、利用"=="比较引用
Java中,当比较简单类型变量时用"==",只要两个简单类型值相等即返回ture,否则返回false,而在对象的比较中,"=="运算符就是比较引用变量所指向的内存地址是否相同 ;
二、通过覆盖equals方法比较引用
[java] view
plaincopyprint?
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等等。
[java] view
plaincopyprint?
String s1=new String("hello");
String s2=new String("hello");
s1==s2//false,按地址进行比较
s1.equals(s2)//true, 已重写,按值进行比较
三、手动重写equals方法比较对象
在定义一个类的时候,如果涉及到对象的比较,应该重写equals()方法。
[java] view
plaincopyprint?
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;
}
最后给出一个标准的对象比较范例
[java] view
plaincopyprint?
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;
else
return 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));
}
}
一、利用"=="比较引用
Java中,当比较简单类型变量时用"==",只要两个简单类型值相等即返回ture,否则返回false,而在对象的比较中,"=="运算符就是比较引用变量所指向的内存地址是否相同 ;
二、通过覆盖equals方法比较引用
[java] view
plaincopyprint?
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等等。
[java] view
plaincopyprint?
String s1=new String("hello");
String s2=new String("hello");
s1==s2//false,按地址进行比较
s1.equals(s2)//true, 已重写,按值进行比较
三、手动重写equals方法比较对象
在定义一个类的时候,如果涉及到对象的比较,应该重写equals()方法。
[java] view
plaincopyprint?
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;
}
最后给出一个标准的对象比较范例
[java] view
plaincopyprint?
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;
else
return 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));
}
}
相关文章推荐
- 看到一篇文章《==与equals()的区别》(java)
- java中的equals()与==的区别
- java中equals与==的区别
- java中两个字符串“Equals”和“==”的区别
- java中equals和==的区别
- JAVA中的equals和==的区别
- java :两个对象相等equals和==的区别
- Java ==与equals()的区别
- JAVA中的equals和==的区别
- java中equals方法和“==”的区别:(转)
- 再说java中的equals和==的区别
- java语言中的两种比较 == 与 equals的区别
- java中“==”与“equals”的区别
- Java中关于==和equal的区别 以及equals()方法重写
- Java equals 和== 区别
- Java 中== 和 equals 的区别
- Java中"equals"和"=="的区别
- java中“==”与“equals”的区别
- Java中== 与 equals的区别
- Java中"equals"和"=="的区别