==用于比较两个变量的值是否相等,也就是比较两个变量对应的内存中的数值是否相同。当比较两个基本数据类型或判断两个引用变量是否指向同一个对象时,应该采用==操作符。
当一个引用变量指向一个对象类型时,此时涉及到两块内存。一个是对象自身的内存,另一个是这个变量的内存。比如 o = new ();new ()是一块内存,而这个变量o是另一块内存,其保存的值就是这个对象所占用的内存的首地址。因此如果要判断两个引用变量是否指向同一个对象时,应该采用==操作符。
equals用于比较两个独立对象的内容是否相同。比如如下代码:
String a = new String("abc");
String b = new String("abc");这里a 指向一块内存,而b指向另一块内存。因此表达式a==b将返回false。而a.equals(b)返回true,因为a、b所指向的两个内存空间的内容是相同的。
当我们自定义了某个类,但没有重写 的equals方法时,会默认采用 的equals方法。 的equals方法内部其实是采用==操作符的。也就是说如果我们创建了这个类的两个相同内容的实例对象,即便我们使用equals方法进行比较,也会返回false。所以我们应该根据实际需要重写这个方法。
继续阅读与本文标签相同的文章
上一篇 :
JAVA程序的内存分配
下一篇 :
JAVA的类访问修饰符
-
abstract method是否可以同时是 static的?
2026-06-02栏目: 教程
-
Java内部类
2026-06-02栏目: 教程
-
abstract 的方法是否可同时是 synchronized ?
2026-06-02栏目: 教程
-
JNI入门
2026-06-02栏目: 教程
-
abstract 的 method是否可同时是 native的?
2026-06-02栏目: 教程
