java 创建string对象机制 字符串缓冲池 字符串拼接机制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 创建string对象机制 字符串缓冲池 字符串拼接机制相关的知识,希望对你有一定的参考价值。

1.String str = new String("hello");

创建了2个对象,1.检查常量池中有没有hello,没有的话,创建对象放到常量池中,再创建对象放到堆中。如果常量池有hello对象,则只创建一个对象并放到堆中。

2.字符串常量池在方法区

3.String str = "hello";检查常量池有无hello,如果有,则把指向该对象,如果没有,创建对象放在常量池里。

4.intern()方法。把字符串变成常量池里的字符串:如果常量池中已经包含了等于该String对象的字符串,则返回该字符串。否则,将该String对象加入常量池,并返回引用。

5.String s1 = "tom";

 String s2 = "cat";

 String s3 = "tomcat";//创建了一个对象,常量池中。

 String s4 = "tom"+"cat";不创建对象

   String s5 = s1 + s2;//创建一个对象"tomcat"

   s3 == s4;true

 s3 == s5;false

 6.1, String s="a"+"b"+"c"+"d"创建了几个对象(假设之前串池是空的)//创建了一个对象,常量池中
  2,StringBuilder sb = new StringBuilder();
    String a = "a";
    String b = "b";
    String c = "c";
    String d = "d";
    String s = a+b+c+d;  这句话创建了几个对象//创建了1个String对象,总共创建了3个对象(new StringBuilder(),new char[],new String())
    StringBuilder sb = new StringBuilder();
    sb.append("a").append("b").append("c").append("d");这句话创建了几个对象//创建0个String对象

 7.字符串常量池在方法区中









以上是关于java 创建string对象机制 字符串缓冲池 字符串拼接机制的主要内容,如果未能解决你的问题,请参考以下文章

java 创建string对象机制 字符串缓冲池 字符串拼接机制 字符串中intern()方法

Java中的字符串

Java为什么把String设计成不可变的(immutable)

Java String语法

java缓冲池

java 建立String对象