中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > 综合文章
==和equals方法的區別
作者:未知 时间:2005-07-27 22:26 出处:CSDN 责编:chinaitpower
              摘要:==和equals方法的區別

: "=="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

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

: intArrA[0],intArrB[0]分别在不同的地址,所以(intArrA[0]==intArrB[0])好像是在为false,但是intArrA[0],intArrB[0]分别仅仅是代表地址所存储的内容,因此, (intArrA[0]==intArrB[0])应该为真.

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

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

     intArrA的内容是一个int类型的数组内存区域, intArrB的内容也是一个int类型的数组内存区域,且长度相等,但是他们是并非是同 一内在区域,而是在内存的两个不同地方,所以他们不相等

B. equals()方法

  equals() 方法是Object的方法,因为一切java类的基类是Object方法,所以,equals方法一定存在于任何一个类里面,且用户在继承某一类并且重定义该方法,此时equals方法的作用则于用户决定了,

但是,我们没有去定义它,我们的要定义的类的所有你类也没有重新定义它,那它的作用就和Object 的方法的一样了,Object对象默认使用了==操作符。所以如果你自创的类没有覆盖equals方法,那你的类使用equals和使用==会得到同样的结果.

 

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

           


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有