题目
"=="和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数学题方程奶奶去超市买了4瓶可乐和7桶牛奶,共用去63元.每瓶可乐3.5元,牛奶每桶
- 3若直线a⊥平面α,直线b‖平面α,则a和b的位置关系是() A、a⊥b,且a∩b B、a⊥b,且a和b不相交 C、a⊥b
- 4如果m-n=1/5,m的平方+n的平方=51/25,那么(mn)的2013的值为( ) A、1 B、-1 C、0 D、无法确定
- 5不饱和烃(烯烃,炔烃)可以发生取代反应吗?
- 6体育课上同学们进行爬竿比赛,质量为50kg的小明匀速爬上直立的竿,在爬竿过程中,他爬竿的功率是______W.
- 7简述四等水准测量(双面尺)一个测站的观测程序,
- 8《傅雷家书》读后感800字
- 9(2010•吉安县)一个酸奶瓶(如图),它的瓶身呈圆柱形(不包括瓶颈),容积是32.4立方厘米.当瓶子正放时,瓶内酸奶高为8厘米,瓶子倒放时,空余部分高为2厘米.请你算一算,瓶内酸
- 10如图,半圆O的直径是AB,AC弧=CF弧,CD⊥AB于D,交AF于点E,求证;AE=CE
热门考点
- 1说明代数式[(x-y)2-(x+y)(x-y)]÷(-2y)+y的值,与y的值无关.
- 2十万火急!用关联词把两句话连成一句话:
- 3含有“公”字的反义词成语 和 含有“功”字的成语
- 416乘于8分之5等于?
- 5如图所示,AB为斜面,BC水平面.从A点以水平初速度v向右抛出一小球,其第一落点与A的水平距离为s1;从A点以水平初速度2v向右抛出一小球,其第一落点与A的水平距离为s2.不计空气阻力,则s1
- 6四个英文字母的特殊机构名称简写?
- 7某公司持有A,B,C三种股票组成的证券组合,三种股票所占比重分别为40%,30%和30%,其β系数为1.2、1.0和0.8,
- 8y=log3(1+2x)/(2-x) 定义域是多少,
- 9古诗夜发清溪向三峡的发字是什么意思
- 10(a,b),关于第二、四象限的角平分线l的对称点P的坐标