浅谈java中的equals和==-java开发java经验技巧

浅谈java中的equals和==-java开发java经验技巧

ID:30854551

大小:79.47 KB

页数:7页

时间:2019-01-03

浅谈java中的equals和==-java开发java经验技巧_第1页
浅谈java中的equals和==-java开发java经验技巧_第2页
浅谈java中的equals和==-java开发java经验技巧_第3页
浅谈java中的equals和==-java开发java经验技巧_第4页
浅谈java中的equals和==-java开发java经验技巧_第5页
资源描述:

《浅谈java中的equals和==-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、浅谈Java中的equals和==-编程开发技术浅谈Java中的equals和二二原文出处:海子在初学Java时,可能会经常碰到下面的代码:1Stringstrl=newString(〃hello〃);2Stringstr2=newString("hello");33System,out.println(strl二二str2);4System,out.println(strl.equals(str2));为什么第4行和第5行的输出结果不一样?二二和equals方法Z间的区别是什么?如果在初Java的时候这个问题不弄清楚,就会导致自己在以后编写代码时出现一些低级的错

2、误。今天就来一起了解一下二二和equals方法的区别之处。关系操作符“二二”到底比较的是什么?下面这个句话是摘自《Java编程思想》一书中的原话:“关系操作符生成的是一个boolean结果,它们计算的是操作数的值Z间的关系”。这句话看似简单,理解起来还是需要细细体会的。说的简单点,二二就是用来比较值是否相等。下面先看几个例子:publicclassMain{/***©paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-gcncratcdmethodstubintn二3;intm=3;System,out

3、.printin(n==m);Stringstr二newString(/Zhello/Z);Stringstrl=newString(/Zhelloz/);Stringstr2=newString(〃hello〃);System,out.printin(strl==str2);strl二str;str2=str;System・out・println(strl==str2);输出结果为truefalsetruen=ni结果为true,这个很容易理解,变量n和变量ni存储的值都为3,肯定是相等的。而为什么strl和str2两次比较的结果不同?要理解这个其实只需要理解基

4、本数据类型变量和非基本数据类型变量的区别。在Java中游8种基本数据类型:浮点型:float(4byte),double(8byte)整型:bytc(lbyte),short(2byte),int(4byte)?,long(8byte)字符型:char(2byte)布尔型:boolean(JVM规范没有明确规定其所占的空间大小,仅规定其只能够取字面值”true"和”false”)对于这8种基本数据类型的变量,变量直接存储的是“值”,因此在用关系操作符二二來进行比较时,比较的就是?“值”本身。要注意浮点型和整型都是有符号类型的,而char是无符号类型的(char类型

5、取值范围为0盲16-1).也就是说比如:intn二3;intm二3;变量n和变量ni都是直接存储的”3〃这个数值,所以用二二比较的时候结果是true。而对于非基木数据类型的变量,在一些书籍中称作为引用类型的变量。比如上面的strl就是引用类型的变量,引用类型的变量存储的并不是“值”本身,而是于其关联的对象在内存中的地址。比如下面这行代码:Stringstrl;这句话声明了一个引用类型的变量,此时它并没冇和任何对象关联。而通过newString(“hello”)來产生一个对象(也称作为类String的一个实例),并将这个对象和s"l进行绑定:strl二newStri

6、ng(〃hello〃);那么strl指向了一个对象(很多地方也把strl称作为对象的引用),此吋变量strl中存储的是它指向的对象在内存中的存储地址,并不是“值”本身,也就是说并不是直接存储的字符串”hello”。这里而的引用和C/C++中的指针很类似。因此在用二二对s"l和slr2进行第一次比较时,得到的结果是false。因此它们分别指向的是不同的对象,也就是说它们实际存储的内存地址不同。西在第二次比较时,都让strl和str2指向了str指向的对象,那么得到的结果毫无疑问是true。—.equals比较的乂是什么?equals方法是基类Object中的方法,因

7、此对丁所有的继承于Object的类都会有该方法。为了更直观地理解equals方法的作用,直接看Object类中equals方法的实现。该类的源码路径为:C:ProgramF订esJavajdkl.6.0_14的src.zip的java,lang路径下的Object,java(视个人jdk安装路径而定)。J4d為一二31@returnJObject.java-Notepad2(管淫员)文件(F)輛(E)重看(V)设置⑸藉助(H)弟哩丨国

8、題QJ色吆丨2下面是Object类屮equals方法的实现:128129130131132'133Q134134'136

9、ode>t

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。