==与equal在java中应用的感悟

今天又算是长见识了。了解了下平时不注意的equal和==的区别。

不管是==又或是equal都是用来比较相同与否。当问题就在这里了,比较什么相同呢?

我的在日常的比较无非也就是两种:1、基本数据类型之间的比较,2、引用类型数据之间的比较。

1、在基本数据类型之间的比较的时候。==与equal是一样的。都是比较两个值是否相同,相同为true不同为false。

2、在引用数据类型之间的比较的时候。==与equal也是一样的,都是比较栈内存中的地址是否相同,相同为true。不同为false。

一般情况下总会有极个别的刺头,这里也不例外。String。大家都知道这是一个特殊的引用类型,对于两个字符串比较,不管是==或是equal

两者比较都是比较字符串是否相同。

 String a1="a";

String a2="a";

if(a1==a2){

  sysout("Y")

}

 这里是会输出Y的

引申:我们知道如果创建两个String对象时,内存的地址是不同的。

但是,还要注意一点,就是如下

String a1=new String("a");

String a2=new String("a");

String a3="a";

上面三个两两比较结果不相同,因为如果明确使用对象就要按引用类型来说了。

原文地址:https://www.cnblogs.com/wangxiangstudy/p/4630459.html