欢迎来到天天文库
浏览记录
ID:30854551
大小:79.47 KB
页数:7页
时间:2019-01-03
《浅谈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'1369、ode>t
9、ode>t
此文档下载收益归作者所有