.equal 和 ==
来源:互联网 发布:mysql regexp使用 编辑:程序博客网 时间:2024/05/21 06:35
老是容易把这两个搞混,记录下,避免下次郁闷......
第一、object.equals()与"=="是相同的,都是用来比较两个变量是否有相同的引用。
但是当用作字符串比较时,String.equals()方法则与"=="不同。
API包的java.lang.String中String.equals()重写了object.equals()这个方法,使其专用作比较两个字符串的内容是否一样。
我们可以分析一下java.lang.String.equals()方法.为了比较说明下面把object.equals()与String.equals()的代码都列出来:
1、object.equals()方法
/---------------------------------------------------------------------------------------------------------
public boolean equals(Object obj) {
return (this == obj);
}
/---------------------------------------------------------------------------------------------------------
我们可以看出Object 类中定义的 equals(Object) 方法是直接使用 "==" 比较的两个对象.
2、java.lang.String.equals()方法
/---------------------------------------------------------------------------------------------------------
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
/--------------------------------------------------------------------------------------------------
在这个方法中,我们可以看出java.lang.String重写了超类的方法。
1。首先判断是不是相同的引用,因为引用相同,内容也一定相同。
2。如果引用不同,则再分析判断长度是不是一样。然后再检查字符串中每一个相同位置上的字符是否相同。
第二、equals(Object) 方法与 "==" 相比的特殊之处就在于它可以覆盖,所以我们可以通过覆盖的办法让它不是比较引用而是比较数据内容。当然 JDK 中也有覆盖过 equals(Object) 方法的类,如 java.lang.String,它就覆盖了从 Object 继承来的的 equals(Object) 方法,用以比较字符串内容是否相同。看看下面这个例子:
public class Example1
{
public static void main(String[] args)
{
String s1=new String("abc");
String s2=new String("abc");
System.out.println("用 == 比较结果");
System.out.println(s1==s2);//false
System.out.println("用equals(Object) 比较结果");
System.out.println(s1.equals(s2));//true
}
}
例中用 equals(Object) 比较结果为 true。用 == 比较结果为 false。String.equals(Object) 方法直接比较了两个字符串的内容,如果相同则返回 true ,否则返回 false。
- .equal 和 ==
- == 和 equal
- == 和 equal()
- ==和.equal(
- equal 和 == 区别
- java == 和 equal
- 关于==和equal
- Java "=="和"equal"
- equal 和== 详解
- == 和 equal方法
- ==和equal区别
- 笔记:equal和==
- 关于equal和==
- 区分==和equal
- = 和 equal 的区别
- equal 和 == 的区别
- ==和equal的区别
- 日期格式与==和equal()
- SIM安装日志
- JDK1.4中文显示font.properties修改
- 使用jar命令创建可执行的jar包(转)
- 使用TRACERT查看网络状况
- 如何打开EJ和POSLog
- .equal 和 ==
- POJ-2236-Wireless Network
- 在Eclipse下编C和C++
- jar命令的使用(转载)
- Java的内存分配
- Where storage lives (From TIJ)
- RIA开发平台架构图
- EKMS
- 更改SQL-Developer的默认语言