题目
"=="和equals方法究竟有什么区别?
提问时间:2020-12-26
答案
(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则
很难说清楚)
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是
否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符.
如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆
内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内
存,此时,变量obj 所对应的内存中存储的数值就是对象占用的那块内存的首地址.对于指向对象类型的
变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这
时候就需要用==操作符进行比较.
equals 方法是用于比较两个独立对象的内容是否相同
,就好比去比较两个人的长相是否相同,它比较
的两个对象是独立的.例如,对于下面的代码:
String a=new String("foo");
String b=new String("foo");
两条new 语句创建了两个对象,然后用a,b 这两个变量分别指向了其中一个对象,这是两个不同的对
象,它们的首地址是不同的,即a 和b 中存储的数值是不相同的,所以,表达式a==b 将返回false,而这
两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true.
在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input
= …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战
的教学视频看看,里面就有大量这样的错误.记住,字符串的比较基本上都是使用equals方法.
如果一个类没有自己定义equals方法,那么它将继承Object 类的equals方法,Object类的equals方法
的实现代码如下:
boolean equals(Object o){
return this==o;}这说明,如果一个类没有自己定义equals 方法,它默认的equals 方法(从Object 类继承的)就是使
用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的
结果,如果比较的是两个独立的对象则总返回false.如果你编写的类希望能够比较该类创建的两个实例对
内容是相同的.
很难说清楚)
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是
否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符.
如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆
内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内
存,此时,变量obj 所对应的内存中存储的数值就是对象占用的那块内存的首地址.对于指向对象类型的
变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这
时候就需要用==操作符进行比较.
equals 方法是用于比较两个独立对象的内容是否相同
,就好比去比较两个人的长相是否相同,它比较
的两个对象是独立的.例如,对于下面的代码:
String a=new String("foo");
String b=new String("foo");
两条new 语句创建了两个对象,然后用a,b 这两个变量分别指向了其中一个对象,这是两个不同的对
象,它们的首地址是不同的,即a 和b 中存储的数值是不相同的,所以,表达式a==b 将返回false,而这
两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true.
在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input
= …;input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战
的教学视频看看,里面就有大量这样的错误.记住,字符串的比较基本上都是使用equals方法.
如果一个类没有自己定义equals方法,那么它将继承Object 类的equals方法,Object类的equals方法
的实现代码如下:
boolean equals(Object o){
return this==o;}这说明,如果一个类没有自己定义equals 方法,它默认的equals 方法(从Object 类继承的)就是使
用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的
结果,如果比较的是两个独立的对象则总返回false.如果你编写的类希望能够比较该类创建的两个实例对
内容是相同的.
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
最新试题
- 1地面上的无题随地球自转时提供向心力的是
- 2甲仓库比乙仓库多10吨货物.如果把甲仓库的5分之1给乙仓库,那么两仓库的货就一样多.那甲,乙仓库各有多
- 3登临吴蜀横分地,
- 4意大利文banico是什么意思
- 5北纬23.1夏至日的昼长是多少
- 6已知抛物线C1:y=-x^2-3x+4 和 抛物线C2:y=x^2-3x-4 相交于A,B两点,点P在抛物线c1,且位于A,B之间;点Q在抛物线C2上,也位于点A和点B之间
- 7(5/6+4/9-2/3)*18怎么简算?
- 8关于一个点电荷电场中的一条电场线,下面说法正确的是( )
- 9判断下列各组函数是否是相等函数f(x)=﹙x-1)²,g(x)=x-1
- 10初3科学电学计算题.要计算过程.第3题
热门考点
- 1有20筐白萝卜,以每筐20千克为标准,超过勤王不足的千克数分别用正,负数表示,记录如下:
- 2杜琪峰新片为什么要叫《高海拔之恋2》那高海拔之恋1呢?
- 3could you ask me the time?
- 475万平方千米,合()万平方米,合()万公顷
- 5谈谈秦始皇创立的郡县制对中国古代历史的影响?
- 6只顾眼前的利益而不顾后患的成语,下半句是什么
- 7We have eight l____ every day.(根据句子意思以及所给的字母,填写所缺单词
- 8分解因式:2x的3次方加x减3
- 9(2012•济南三模)若复数i•(1+ai)是纯虚数,则实数a的值是( ) A.1 B.-1 C.0 D.0或-1
- 10被称为活化石的动物是什么?