前言
在学习Java时经常遇到这个问题,虽然很简单,自己也会用,并且哪里该用==
哪里该用equals()
也是能辨别出来,但是不知道==
和equals()
它俩有啥区别。
特此记录下此片文章,方便以后自己查询时不用再去Baidu、Google、Bing了
区别
1.
==
直接判断两个变量名的值是否指向同一个内存空间地址 (如果都指向同一个内存空间地址的话就返回true)
2.equals()
直接判断两个变量名的值是否相同 (如果相同则返回true)
以上简单的说明了==
和equals()
它们的区别,如果想看更详细的内容请继续往下看。
关系运算符 ==
关系运算符返回的是一个boolean类型结果,它计算的是值之间的关系
1 | int a=3; |
运行结果是true,false,true
解析:System.out.println(str2==str3);
为什么会返回false
因为String str2 = new String("hello");
已经new了一个内存空间来存储hello
String str3 = new String("hello");
又new了一个内存空间来存储hello
这里判断用的是==
关系运算符,上面已经明确说明了==
判断两个变量名的值是否指向同一个内存空间地址(如果都指向同一个内存空间地址的话就返回true) 因此运行结果为false
如果使用的是equals()
的话,返回结果则是true
那么会有人问,为什么b不会创建一个新的内存空间呢?
因为a已经创建了一个内存空间了,b就直接指向3了
说人话就是:
1.
int b=3;
就是使用别人创建好的,举个例子:A花钱建了个公共厕所,B就可以直接花钱使用
2.String str3 = new String("hello");
就是别人建别人的,我建我自己的,举个例子:A花钱建了个公共厕所,B也要建一个公共厕所