String字符串关于==的详解

Posted dearcabbage

tags:

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

String详解

字符创建方式

字符串创建有两种方式

  • String s = new String("myString");
  • String string2 = "myString";

    创建过程解析

    方式一创建时,先解析字符串常量"myString",它会在常量池里面的一个字符串常量列表中查找,如果没有找到,在堆里面创建一个包含字符序列(myString)的String对象s1,然后把这个String对象的字符序列和引用作为名值对存放到常量池里面的字符床常量列表中。如下图所示:
    技术图片
    接下里就在堆里面再创建一个包含字符序列(myString)的String对象,并让s指向它。
    方式2创建时,先解析字符串常量池里面的字符串常量列表,如果找到了就直接包表中对于的对象引用返回。所以string2和s1指向的是堆里的同一个对象。

intern方法

  • 如果这个String对象的字符序列不在字符床常量列表中,那么就会把这个String对象的字符序列和引用以名值对的形式放入列表中,并返回一个指向String对象本身的引用。
  • 如果这个String对象的字符序列在字符串常量列表中,那么就会返回常量列表中相同字符序列对应的对象引用。
        String s3 = new String("gouzi");
        String s4 = "gouzi";
        System.out.println(s3.intern() == s4);

引用地址

引用链接
如有侵权,告之立删。

以上是关于String字符串关于==的详解的主要内容,如果未能解决你的问题,请参考以下文章

String字符串关于==的详解

CSP核心代码片段记录

Redis五大数据类型详解

Python中verbaim标签使用详解

C语言sscanf()函数详解的代码

21个常用代码片段