Java中关于String的比较

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中关于String的比较相关的知识,希望对你有一定的参考价值。

关于String的各种==和equals,有的人搞不懂

简而言之

String  s1 = "Hello"                     声明的是一个常量,会在常量池里。

String  s2 = new String("Hello"),声明的是一个对象,在内存里会有单独的空间。 

==比较的是String的地址

equals比较的是String的内容

public class TestString{
    public static void main(String[] args){
        String str1 = new String("Hello");
        String str2 = new String("Hello");
        String str3 = "Hello";
        String str4 = "Hello";
        System.out.println(str1.hashCode());
        System.out.println(str2.hashCode());
        System.out.println(str1.equals(str2));
        System.out.println(str1==str2);
        System.out.println(str1.equals(str3));
        System.out.println(str1==str3);    
        System.out.println(str3.equals(str4));
        System.out.println(str3==str4);    
    }
}

输出是:

69609650
69609650
true
false
true
false
true
true

 

以上是关于Java中关于String的比较的主要内容,如果未能解决你的问题,请参考以下文章

Java中关于String类详解

Java中关于WeakReference和WeakHashMap的理解

Java中关于WeakReference和WeakHashMap的理解

java中关于Enumeration.hasMoreElements()的问题

Java中关于string的些许问题及解析

Java中关于String类以及字符串拼接的问题