正文

"=="和equals方法有什么区别2007-03-21 12:56:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/Csharpsky/24158.html

分享到:

 
 


"=="和equals方法有什么区别

 ==是判断两个变量或实例是不是指向同一个内存空间
equals是判断两个变量或实例所指向的内存空间的值是不是相同

==是指对内存地址进行比较
squals()是对字符串的内容进行比较

==指引用是否相同
equals()指的是值是否相同

A.==操作符专门用来比较变量的值是否相等,由于变量名只是内存地址的引用名称,所以而不代表变量本身,
由此可知道变量的值指的是好像某一块内在地址,请看示例

Int intA=10;

Int intB=10;

int intArrA[]=new int[2];

        int intArrB[]=new int[2];

        for(int i=0;i<2;i++){

            intArrA[i]=0;

            intArrB[i]=0;

}

System.out.println("(intA==intB)="+(intA==intB));

System.out.println("(intArrA==intArrB)="+(intArrA==intArrB));

System.out.println("(intArrA[0]==intArrB[0])="+(intArrA[0]==intArrB[0]));

输出结果是:

(intA==intB)=true

(intArrA==intArrB)=false

(intArrA[0]==intArrB[0])=true

从结果可知, intArrA和intArrB是数组名称,故代表的是内存指针,所以上述结论在此可以通过,另外

因: intArrA[0],intArrB[0]分别在不同的地址,所以(intArrA[0]==intArrB[0])好像是在为false,但是intArrA[0],intArrB[0]分别仅仅是代表

地址所存储的内容,因此, (intArrA[0]==intArrB[0])应该为真.

故, ==操作符专门用来比较变量的”内容”或者”实质”是否相等的;

如:  intA的内容是10,intB的内容也是10所以intA和intB是相等的,

     intArrA的内容是一个int类型的数组内存区域, intArrB的内容也是一个int类型的数组内存区域,且长度相等,但是他们是并非是同 一内

在区域,而是在内存的两个不同地方,所以他们不相等

B. equals()方法

  equals() 方法是Object的方法,因为一切类的基类是Object方法,所以,equals方法一定存在于任何一个类里面,且用户在继承某一类并且重定

义该方法,此时equals方法的作用则于用户决定了,

但是,我们没有去定义它,我们的要定义的类的所有你类也没有重新定义它,那它的作用就和Object 的方法的一样了,因Object对象默认使用了==

操作符。所以如果你自创的类没有覆盖equals方法,那你的类使用equals和使用==会得到同样的结果.

所以总结一句话, ==是”内容”(或实质),而equals是表象


==和equals()的区别用法
 悬赏分:10 - 解决时间:2006-9-19 21:37
class A
{
int a=1;
}
class Appa
{
public static void main(String args[])
{
String s1,s2,s3,s4;
s1="abc";
s2="abc";
s3=new String("abc");
s4=new String("abc");
A obj1,obj2;
obj1=new A();
obj2=new A();
System.out.println("s1==s2:"+(s1==s2));
}
}
如果按资料上说的是==为引用,他们的引用不一样啊!输出应该是false啊!可是输出为true!大家顺便把==和equals()的区别用法说一下!
==指引用是否相同
equals()指的是值是否相同

字符串是特殊的~
字符串是对象,新建个“abc”的字符串的时候,系统会先到内存中找,看是否存在‘a’,‘b’,‘c’,如果存在,引用,不存在新建
所以你打出来的是true


 

阅读(7310) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册