龙空技术网

JAVA大厂面试题------equals与==的区别

No我你他 110

前言:

当前姐妹们对“java中的equals和等于号的区别”大约比较注重,小伙伴们都想要知道一些“java中的equals和等于号的区别”的相关文章。那么小编同时在网摘上汇集了一些对于“java中的equals和等于号的区别””的相关文章,希望兄弟们能喜欢,各位老铁们一起来学习一下吧!

== :

== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。

1、比较的是操作符两端的操作数是否是同一个对象。 2、两边的操作数必须是同一类型的(可以是 父子类之间)才能编译通过。 3、比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如: int a=10 与 long b=10L 与 double c=10.0都是相同的(为true),因为他们都指向地址为10地堆。

Integer a1 = 110, a2 = 110, a3 = 140, a4 = 149;System.out.println(a1 == a2);//trueSystem.out.println(a3 == a4);//falseInteger a = new Integer(3);int b = 3;Integer c = 3;System.out.println(a == b);//trueSystem.out.println(a == c);//false a new了一个新对象,所以用==比较的是内存中的存放地址

equals

equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。

总结:

所有比较是否相等时,都是用equals 并且在对常量相比较时,把常量写在前面,因为使用object的equals object可能为null 则空指针在阿里的代码规范中只使用equals ,阿里插件默认会识别,并可以快速修改,推荐安装阿里插件来排查老代码使用“==”,替换成equals。

Integer i = 2;Integer i1 = 2;int i2 = 2;Integer i3 = 200;Integer i4 = 200;System.out.println("2".equals(i));//false 这个应该是String和Integer比较,肯定不一样啊System.out.println(i1.equals(i)); //true 以下比较的都是常量System.out.println(i.equals(i2)); //trueSystem.out.println(i3.equals(i4));//true

标签: #java中的equals和等于号的区别