java基础之“==庇搿?鼻鹣杲?

  

对于初学java的人来说,在面对数值比较的时候,我们大多数会采用“==钡姆绞嚼唇斜冉?但是java中给我们提供了=()方法,这时候很多人就会忽略这两种方式的区别,在学习中产生了很多错误,本文将详细区分=和==两种方式的区别。

  

"=="解读

  

对于基本类型和引用类型,==的作用效果是不同的,对于基本类型来说,比较的是值是否相同,对于引用类型来说,比较的是引用是否相同。

  

代码示例:

        公共静态void main (String [] args) {      字符串x=澳愫谩?   字符串y=澳愫谩?   字符串z=新的字符串(“hello”);      System.out.println (x.e quals (y));//正确的   System.out.println (x.e quals (z));//正确的   system . out。println (x==y);//正确的   system . out。println (x==z);//误      }      

因为x, y指向的是同一个引用,所以==和=都是真实的,而新的字符串()又开辟了一个新的空间,所以==为false,但是=始终比较的是值,所以为真的。

  

=解读

  

在本质上,等于就是==,只是字符串和整数等重写了等于方法,使得=只用于值比较。

        公开课Demo1 {   私人字符串名称;   公共Demo1(字符串名称){   this.name=名称;   }   公共字符串getName () {   返回名称;   }   公共空间setName(字符串名称){   this.name=名称;   }   公共静态void main (String [] args) {   Demo1 Demo1=new Demo1(“张三”);   Demo1以及接下来=new Demo1(“张三”);   字符串s=新的字符串(“李四”);   字符串s2=新的字符串(“李四”);   System.out.println (demo1.equals(以及接下来));//假的   System.out.println (s.equals (s2));//正确的      }   }      

可以看到demo1和以及接下来的值一样,但是输出结果却是假的,而年代和s2的值一样却输出结果为真的,怎么回事?

  

=代码

        公共布尔=(对象obj) {   返回(这==obj);   }      

可以看的到,原始的=方法本质上就是==

  

字符串类中平等的方法

        公共布尔=(对象anObject) {   如果(这==anObject) {   返回true;   }   如果(anObject instanceof字符串){   字符串anotherString=(字符串)anObject;   int n=value.length;   如果(n==anotherString.value.length) {   v1 char[]=价值;   v2 char []=anotherString.value;   int i=0;   而(n - !=0) {   如果(v1[我]!=v2[我])   返回错误;   我+ +;   }   返回true;   }   }   返回错误;   }      

可以看的到,字符串重写了对象的=的方法,把引用比较改成了值的比较。

  

本文主要介绍了java基础开发中“==庇搿?鼻鹑绻肓私飧喙赜趈ava基础开发相关信息请查看下面的相关链接

java基础之“==庇搿?鼻鹣杲?