java 中equals和==的区别

2019-02-25 16:12:13来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

  

  java9举例代码:

1   String str1 = "abc";
2   String str2 = "abc";
3   String str3 = new String("abc");
4   String str4 = new String("abc");

      当:  str1 == str2    输出:true    当:str1.equals(str2); 输出:true

      当:  str1 == str3 输出:false      当:str1.equals(str3); 输出:true

      当:  str3 == str4 输出:false      当:str3.equals(str4); 输出:true

        

    涉及到的细节:

     - 可以通过String中intern方法,字符串对象在常量池中和它相等的字符串的引用

         str3.intern() == str4.intern()  输出:true

         str1.intern().equals(str2.intern())  输出:true

         str1.intern() == str1   输出:false

     - String str = new String("abc");创建了几个对象?

         首先要看常量池里是否有“abc”这个字符串,如果有(String str = "abc";出现时则有),则创建一个,如果没有,则创建两个(一个在常量池,一个在堆中)。

 

    == 和 equals 区别:

      对于 == :

          作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

          作用于引用类型的变量,则比较的是所指向的对象的地址;

      对于 equals:  

          equals方法不能作用于基本数据类型的变量;

          如果没有对Object中equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址,反之则比较的是内容;

          

          

 


原文链接:https://www.cnblogs.com/stamp/p/java_base_compare.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java全栈程序员之07:IDEA中使用MAVEN构架生产级的Web项目

下一篇:Json和Map互转,三个包(org.json/net.sf.json/com.google.gson