String常量池

2018-03-12  本文已影响0人  肚皮怪_Sun

在java中String是存在于常量池中。也就是说一个String被定义之后它就被缓存到了常量池中,当其他地方使用同样的字符串时,则直接使用时缓存,而不会重复创建。

    String str1 = new String("abc");
    String str2 = "abc";
    String str3 = new String("abc");
    String str4 = "ab" + "c";

    System.out.println(str1.equals(str2));
    System.out.println(str1.equals(str3));
    System.out.println(str2.equals(str3));
    System.out.println("================================================");
    System.out.println(str1==(str2));
    System.out.println(str1==(str3));
    System.out.println(str2==(str3));
    System.out.println(str2==(str4));

输出如下:

true
true
true
================================================
false
false
false
true

string的equals只是根据字符值进行判断,因此前三个的值为true
通过“==”判断的是两个对象指向的内存地址是否相等。
str1和str3都是通过new构建出来的,而str2str4是通过字面赋值的。
最后一个通过“==”判定的值为true,也就是说是同一个对象,str4使用了缓存在常量池中str2对象

上一篇 下一篇

猜你喜欢

热点阅读