介绍
这篇文章将为大家详细讲解有关Java中==和=的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
<强> 1,==解读强>
对于基本类型和引用类型==的作用效果是不同的,如下所示:
基本类型:比较的是值是否相同,引用类型:比较的是引用是否相同,
代码示例:
String x =,“string"; String y =,“string"; String z =, new 字符串(“string"); System.out.println (x==y);//,真的 System.out.println (x==z);//,假的 System.out.println (x.e quals (y));//,真的 System.out.println (x.e quals (z));,//,真正的
代码解读:因为x和y指向的是同一个引用,所以==也是真的,而新的字符串()方法则重写开辟了内存空间,所以==结果为false,而等于比较的一直是值,所以结果都为真的。
<强> 2,等于解读强>
=本质上就是==,只不过字符串和整数等重写了等于方法,把它变成了值比较。看下面的代码就明白了。
首先来看默认情况下=比较一个有相同值的对象,代码如下:
class Cat { public 才能;猫(String 名称),{ ,,,this.name =,名称; ,,} , private 才能;String 名称; , public 才能;String  getName (), { ,,,return 名称; ,,} , public 才能;void  setName (String 名称),{ ,,,this.name =,名称; ,,} } , Cat c1 =, new 猫(“王磊“); Cat c2 =, new 猫(“王磊“); System.out.println (c1.equals (c2));,//,假
输出结果出乎我们的意料,竟然是假的?这是怎么回事,看了等于源码就知道了,源码如下:
public boolean =(Object obj), { ,,,return (却;能够==,obj); }
原来=本质上就是==,
那问题来了,两个相同值的字符串对象,为什么返回的是真的吗?代码如下:
String s1 =, new 字符串(“老王“); String s2 =, new 字符串(“老王“); System.out.println (s1.equals (s2)),,//,真正的
同样的,当我们进入字符串的=方法,找到了答案,代码如下:
public boolean =(Object anObject), { if 才能;(却;能够==,anObject), { ,,,return 真实; ,,} if 才能;(anObject instanceof 字符串),{ ,,,String anotherString =,(字符串)anObject; ,,,int n =, value.length; ,,,if (n ==, anotherString.value.length), { ,,,,,char v1[],=,价值; ,,,,,char v2 [],=, anotherString.value; ,,,,,int 小姐:=,0; ,,,,,while (n -, !=, 0), { ,,,,,,,if (v1[我],!=,v2[我]) ,,,,,,,,,return 假; ,,,,,,,我+ +; ,,,,,} ,,,,,return 真实; ,,,} ,,} return 才能;假; }
原来是字符串重写了对象的=方法,把引用比较改成了值比较。
关于Java中==和=的区别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。