Java 中==与Equals方法的区别

==和Equals方法对值的比较

 

对于==来比较变量是否相同:

如果是数值类型,那么值相同则相同

如果是引用类型,那么需要比较:是否指向同一个对象(对象的引用是否相等)

例如:

String s1 =new String(“s”)

String s2=new String(“s”)

Java 中==与Equals方法的区别

通常说创建一个名为s1的对象,但是真正创建对象其实是后半句:new String(“s”)

而s1只是对对象的一个引用(对象的地址),这里我查了一些资料,觉得当中有个例子很容易理解

我们new String(“s”)在堆内存中创建了一个对象,就好比它是一个氢气球在天上飞,没有绳子我们抓不住,那么String s1(对象的引用)就好比创建了一根绳子,拉住了气球(对象)

利用==来进行判断,就是判断是否指向同一个对象,很显然,这里创建了两个气球,两根绳子,虽然内容相同,但是指向并不同,所以输出是false

如果这样

String s2=s1,将s1赋值给s2,s2这根线也连在了气球上,一个气球两根绳子,返回就会是true。

 

Equals方法就是比较内容,s1和s2所指向对象的内容相同,所以s1.Equals(s2)返回就是True