zoukankan      html  css  js  c++  java
  • java 中equals和==的区别

    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   输出:true

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

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

    == 和 equals 区别:

          对于 == :

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

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

          对于 equals:  

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

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

  • 相关阅读:
    HDU 1850 Being a Good Boy in Spring Festival
    UESTC 1080 空心矩阵
    HDU 2491 Priest John's Busiest Day
    UVALive 6181
    ZOJ 2674 Strange Limit
    UVA 12532 Interval Product
    UESTC 1237 质因子分解
    UESTC 1014 Shot
    xe5 android listbox的 TMetropolisUIListBoxItem
    xe5 android tts(Text To Speech)
  • 原文地址:https://www.cnblogs.com/stamp/p/java_base_compare.html
Copyright © 2011-2022 走看看