美文网首页
String理解

String理解

作者: 懵逼猴 | 来源:发表于2019-11-22 16:19 被阅读0次

基本概念

  1. 直接使用字符串会直接进入常量池
String s1 = new String("he")// 会产生两个对象一个在堆中的s1字符串对象,一个使用"he"生成的字符串对象并加入常量池中

2.String#intern() 方法的作用就是

  • 如果字符串未在 Pool 中,那么就往 Pool 中增加一条记录,然后返回 Pool 中的引用。
  • 如果已经在 Pool 中,直接返回 Pool 中的引用。
  1. JDK1.6的实现
    它的string pool实现是要求要将被string pool引用的String实例放在PermGen里的,而随便造个普通的String实例不在PermGen里,所以这里会在PermGen内创建一个原String的拷贝,尽量小心使用 String.intern() 方法,容易导致 OutOfMemoryError!
  2. JDK1.7以上的版本
    返回的使用存在堆中字符串是引用
    4.实例说明
String s1 = new String("he") + new String("llo"); // ①
        String s2 = new String("h") + new String("ello"); // ②
        String s3 = s1.intern(); // ③
        String s4 = s2.intern(); // ④

运行main方法,先看第一句,会创建"he"和"llo"对象,并放入字符串常量池,然后会创建一个"hello"对象,没有放入字符串常量池,s1指向这个"hello"对象。第二句,创建"h"和"ello"对象,并放入字符串常量池,然后会创建一个"hello"对象,没有放入字符串常量池,s2指向这个"hello"对象。第三句,字符串常量池里面还没有,于是会把s1指向的String对象的引用放入字符串常量池(换句话说,放入池中的引用和s1指向了同一个对象),然后会把这个引用返回给了s3,所以s3==s1是true。第四句,字符串常量池里面已经有了,直接将它返回给了s4,所以s4==s1是true。

参考文章

字符串常量池与intern
发现String#intern的API描述有问题
Java 字符串常量池介绍
https://www.zhihu.com/question/55994121/answer/147296098

相关文章

  • String理解

    public static void main(String[] args) { String a = "ab"...

  • String理解

    基本概念 直接使用字符串会直接进入常量池 2.String#intern() 方法的作用就是 如果字符串未在 Po...

  • Java String 理解

    我们经常会面对一个问题,String 是最基本的数据类型吗?String 是值类型还是引用类型? 首先我们来回答第...

  • String的理解

    在做java开发中,我们一定没少使用String这个东西,对它可谓是非常熟悉了,但是我今天要来仔细的学习学习Str...

  • String 个人理解

    1.继承关系 因为string是继承final的,所以他是一个不可变的字符串,并且还不能被继承 重点:String...

  • 理解3:String StringBuffer 和 String

    String 类中使用 final 关键字修饰字符数组来保存字符串,private final char valu...

  • 深入理解String, StringBuffer, String

    String, StringBuffer, StringBuilder区别 String 是 Java 语言非常基...

  • String、StringBuffer、StringBuilde

    理解Java的字符串,String、StringBuffer、StringBuilder有什么区别? String...

  • 2018-03-22

    java学习随笔2 String不可变的理解 查看String的源码,可以发现String的class的修饰词是f...

  • 理解String.intern()

    直接上代码,一个很小的知识点。 结果为 true false true

网友评论

      本文标题:String理解

      本文链接:https://www.haomeiwen.com/subject/hrswbctx.html