String创建方式及其区别

  对于String的创建有两种方式,一是直接赋值,二是使用构造方法将其实例化

一、直接赋值

    String str = "jim";

执行这段代码时,JVM会在常量池中开辟空间存放jim并让str指向该空间;

      String str = "jim";
      String str1 = "jim";
      System.out.println(str == str1);

输出:true

说明二者指向同一处内存空间

执行第一行代码时,JVM会在常量池中开辟空间存放jim并让str指向该对象;

执行第二行代码时,JVM会首先检查常量池中是否已经存在一处内容为jim的空间。如果存在就让str1指向该空间,否则在常量池中开辟一个新的内存空间用于存放该字符串

二、构造方法将其实例化

    String str2 = new String("abc");
    String str3 = new String("abc");
    System.out.println(str2 == str3);

输出:false

说明二者指向的不是同一处内存空间

执行前两行代码时,JVM会在堆中开辟两个不同的空间用于存放str2和str3。采用这种方式每定义一个String类型的变量,无论内容是否相同,都在栈中开辟空间储存首地址,在堆中储存数。

扫描二维码关注公众号,回复: 10450934 查看本文章

要输出通过这种方式赋值的字符串需要调用toString方法

       System.out.println(str2.toString());

输出:abc

所以两种创建方式中第一种明显节省内存空间

发布了18 篇原创文章 · 获赞 2 · 访问量 323

猜你喜欢

转载自blog.csdn.net/bravery__/article/details/104886180
今日推荐