Java中==和=的区别是什么

  介绍

这篇文章将为大家详细讲解有关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中==和=的区别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

Java中==和=的区别是什么