A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

==操作符专门用来比较两个变量的是否相等,也就是用于比较变量所对应内存中所存储的数值是否相同,
要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
如果一个变量指向的数据是对象类型,那么这时候设计了两块内存,
对象本身占用一块(堆内存),变量也占用一块内存。

例如:Object obj new @Object();
   变量obj是一个内存,newObject()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用
的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向一个对象,既要看两个变量对应的内存中数值是否相等,这时候就要用==操作符进行比较了。

equal方法是用于比较两个独立独行的内容是否相同,就好比比较两个人长相是否相同,他比较的两个对象是独立。
例如:
  1. String a =new String("foo");
  2. String b = new String("foo");
复制代码


两条new语句创建了两个对象,然后用a,b这两个变量分别指向其中一个对象,这是两个不同的对象,他们的首地址是不同的,即a和b中存储的数值是不相同的,所以表达式a==b返回false,而这两个对象的内容是相同的,所以,表达式a.equal(b)将返回true

在实际开发汇总要经常比较传递进来的字符串判断是否相等,例如:
  1. String input=...;
  2. input.equals("quit");
复制代码

许多人稍微不注意就使用==比较,这是错误的。
记住字符串比较都要用equals方法。


1 个回复

倒序浏览
当比较的是基本数据类型的时候,不能用equals??
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马