==是判断是否是同一个对象,而equals是判断值是否相等
比较字符串是否相等用equals方法, 如str2.equals(str2) ,这是比较字符串str1与str2是否相等
比较数值是否相等用"=="
“==”与equals()的区别;“==”比较的是对象的引用;equals()比较的是对象的内容
例:
public
static
void
main(String args[]){
String a=
"1234"
;
String b=
"1234"
;
String c =
new
String(
"1234"
);
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a.equals(c));
}
![](https://i-blog.csdnimg.cn/blog_migrate/ec214f6e8ff856dabde5dceaaed7204d.png)
来源:http://zhidao.baidu.com/question/74187050.html
所以可以看出a和c并不是同一个变量,只是值相等
==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
int a=10;
int b=10;
则a==b将是true。
但不好理解的地方是:
String a=new String("foo");
String b=new String("foo");
则a==b将返回false。
根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是false。诚然,a和b所指的对象,它们的内容都是"foo",应该是“相等”,但是==操作符并不涉及到对象内容的比较。
对象内容的比较,正是equals方法做的事。
来源:http://group.gimoo.net/review/129720