对于不同的数据类型,使用==进行比较的意义不同:
基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean。用==,比较的是他们的值;
引用数据类型:用(==)进行比较的时候,比较的是地址。
对于引用类型,除非是同一个new出来的对象,他们的比较的结果为true,否则为false。因为每new一次,都会重新开辟堆内存空间,哪怕他们的值一致,但是也是在不同的地址存放。所以对于引用类型的值比较应该使用equals方法。
equals()方法介绍 equals 方法是 Object 中定义的一个方法,源码如下:
public boolean equals(Object obj) { return (this == obj); } 可以看到实际上就是用的 == 实现的,所以这个原始方法意义不大,一般在类中做比较的时候,都会重写这个方法,如String、Integer、Date等。 结论 equals和==的区别,需要分情况讨论:
没有重写 equals ,则 equals 和 == 是一样的。
如果重写了 equals,则需看 equals 的方法实现。以 String 类为例:
equals 是比较字符串的内容是否一样;
== 是比较字符串的堆内存地址是否一样,或者说引用的值是否相等。