== 和 equals 的区别

solonc 2006-07-20 05:23:08
虽然明白有差异,但却说不出所以然,谁可以解释一下?

下面是测试,运行后就知道结果。
重点在第一,二的if语句。。
public class EqualsDemo {

public static void main(String[] args) {
String var1 = new String("var1");
String var2 = new String("var");
var2 = new String(var2 + "1");
System.out.println(var2);
if (var1==var2)
System.out.println(" using == operator return same Object.");
else
System.out.println(" using == operator return different Object.");
if (var1.equals(var2))
System.out.println(" using equals method return same Object.");
else
System.out.println(" using equals method return different Object.");
var1=var2;
System.out.println("After assigning var1=var2");
if (var1 == var2)
System.out.println(" using == operator return same Object.");
else
System.out.println(" using == operator return different Object.");
if (var1.equals(var2))
System.out.println(" using equals method return same Object.");
else
System.out.println(" using equals method return different Object.");
}
}
...全文
509 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
solonc 2006-07-21
  • 打赏
  • 举报
回复
thanks everyone!
jelolobo 2006-07-21
  • 打赏
  • 举报
回复
自定义类需要重写equals()方法来实现比较!
changsoso 2006-07-21
  • 打赏
  • 举报
回复
很正常啊,没什么特殊
jigangwang 2006-07-21
  • 打赏
  • 举报
回复
class testperson
{
public String name;
public int age;

public testperson(String name,int age)
{
this.name=name;
this.age=age;
System.out.println("done!");
}
public static void main(String [] args)
{
testperson p1=new testperson("aaa",20);
testperson p2=new testperson("aaa",20);

if(p1.equals(p2))
System.out.println("object equals ok!");

if(p1== p2)
System.out.println("object == ok!");

String a=new String ("eee");
String b=new String ("eee");

if(a.equals(b))
System.out.println("string equals ok!");

if(a==(b))
System.out.println("string == ok!");

}

}

请高手看下这个代码...
yoyo82 2006-07-21
  • 打赏
  • 举报
回复
楼上的都答得好!


在管理里面给分!

进入社区后/我的技术社区/我的帖子/点帖子后的管理/ 这样就可以给分了。


不给分要没信誉的哦!
y_navy 2006-07-21
  • 打赏
  • 举报
回复
最简单的来说==是比较两个 对象是不是指向同一地址.
equals是比较对象是否相同也就是比较的是两个String的值是否相同,与其地址无关
ladofwind(随风)
解释的非常明白了
forget4ever 2006-07-21
  • 打赏
  • 举报
回复
看看对象的深拷贝和浅拷贝,你就明白了。
Oo小海oO 2006-07-21
  • 打赏
  • 举报
回复
equals是看两个值的比较,而==是比较两个内存地址
ladofwind 2006-07-21
  • 打赏
  • 举报
回复
equals比较内容
==比较是否同一个引用

String s1 = "123";
String s2 = "123";
String s3 = new String("123");

s1==s2 ;// true ;
s1==s3 ;// false
s1.equals(s3) ;// true
Pigwen 2006-07-20
  • 打赏
  • 举报
回复
equals包括==的比较
cityhunterbest 2006-07-20
  • 打赏
  • 举报
回复
是不是对象的比较还有内存地址的问题?????
syhan 2006-07-20
  • 打赏
  • 举报
回复
equals 是值的比较
==是两对象之间的比较

这个说的很对
dreamover 2006-07-20
  • 打赏
  • 举报
回复
100遍啊,100遍
lip009 2006-07-20
  • 打赏
  • 举报
回复
==用在基本类型上是比较基本类型的值是否相等,用在对象之间比较,是比较两个对象的引用内存地址是否相同,也就是是否是同一个对象的引用!
equals()用来比较对象里边的内容或是值是否相等!比如字符串比较就是比较两个字符串的值是否相等了!自定义类需要重写equals()方法来实现比较!比如下面这个类:
public class Person{
private String name;
private int age;

public Person(String name,int age){
this.name=name;
this.age=age;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return this.age;
}

//重写equals方法
public boolean equals(Person person){
boolean result=false;
if(this.name.equals(person.getName()) && this.age==person.getAge();){
result=true;
}
return result;
}
}
//测试类
public class Test{
public static void main(String args[]){
Person person1=new Person("zhangsan",23);
Person person2=new Person("zhangsan",23);
boolean result;
result=person1.equals(person2);
System.out.println(result);
if(result){
System.out.println("person1==person2");
}
else{
System.out.println("person1!=person2");
}
}
}
solonc 2006-07-20
  • 打赏
  • 举报
回复
Thanks, 怎么给你们分数?
kevinliuu 2006-07-20
  • 打赏
  • 举报
回复
equals比较内容
==比较是否同一个引用

String s1 = "123";
String s2 = "123";
String s3 = new String("123");

s1==s2 ;// true ;
s1==s3 ;// false
s1.equals(s3) ;// true
rypgood 2006-07-20
  • 打赏
  • 举报
回复
应该是这样吧?刚学不久的哦
rypgood 2006-07-20
  • 打赏
  • 举报
回复
对与==,它只能比较两个对象的值,而equals则不限制于此,它可以判断一个对象与另一个对象间是否有差异
sunshine5246 2006-07-20
  • 打赏
  • 举报
回复
equals 是值的比较
==是两对象之间的比较
例如 String s1 = new String("string");
String s2 = new String("string");
s1 和s2值相同,用equals比较的话,返回true,用==比较的话返回false

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧