"=="和equals方法的区别

来源:互联网 发布:鼎豪网络 编辑:程序博客网 时间:2024/05/01 06:09

1、

==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
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方法做的事。

2、

public static void main(String[] args)
 {
        String ss=new String("gdd");
        String dd=new String("gdd");
        System.out.println(ss.equals(dd));
        System.out.println(ss==dd);
 }

结果:

true
false

参考:

JDK源码分析:java.lang.String

Java String对象的经典问题(new String())


原创粉丝点击