【java基础】String Pool

原创 2016年06月01日 23:57:02

String Pool正如它的名字所说明的那样,是在heap memory中保存一个字符串池.

使用String Pool主要的目的是用来节省存储空间,一般java程序中分布着大量的字符串变量.Java中String对象的内容是不能被修改的,因此,如果字符串的内容是一样,就没有必要再重新创建一个新字符串对象来表示,完全可以把已经存在的对象作为返回,这样可以有效剩下空间.这种方式需要在定义字符串的时候使用双引号,例如: String a = “alice”,如果使用String的构造方法String(String)这时JVM并不会将创建的对象放到String Pool当中,而是在heap中的其他位置分配空间去创建String对象.

可以看如下的小例子:


public class StringPool {
    public static void main(String[] args) {
        String a = "Alice"; //String Pool
        String b = "Bob";  //String Pool

        String a1 = "Alice"; //String Pool
        String b1 = new String("Bob"); // heap but not in string pool

        System.out.println("a == a1 ? " + (a == a1));
        System.out.println("b == b1 ? " + (b == b1));
    }
}

执行的结果:

a == a1 ? true
b == b1 ? false

下面的图描述的不同创建方式所分配的内存空间的策略:

这里写图片描述

参考:
http://www.journaldev.com/797/what-is-java-string-pool

版权声明:本文为博主原创文章,未经博主允许不得转载。

【Java基础提高】深入分析String(四)

我是小毛驴,一个游戏人,我的梦想是世界和平。转载请注明出处:http://blog.csdn.net/liulongling/article/details/50347279 一、写在前面   本...
  • liulongling
  • liulongling
  • 2015年12月17日 22:01
  • 4251

java基础数据类型与String类型区别

区别:Java内存存放位置不一样,基本数据类型存在栈(stack),String的对象实例存在堆(heap)。另外String,不是基本数据类型,判断是否相等,不能使用==,而应该使用equals方法...
  • ta1bin1
  • ta1bin1
  • 2016年12月15日 10:11
  • 1402

Java基础编程题(API阶段测试)(答案)

Java基础编程题(API阶段测试)(答案)
  • qq_33885315
  • qq_33885315
  • 2017年03月05日 14:27
  • 2384

java字符串池(string pool)和字符串堆(heap)内存分配

java运行环境有一个字符串池(string pool),由String类维护。   执行语句 String str = "abc" 时,首先查看字符串池中是否存在字符串"abc",如果存在则直接...
  • weiioy
  • weiioy
  • 2013年07月25日 13:36
  • 722

Java字符串池(String Pool)深度解析

Java字符串池(String Pool)深度解析
  • m15527097561
  • m15527097561
  • 2017年08月08日 12:19
  • 142

JAVA String Pool

    要理解 java中String的运作方式,必须明确一点:String是一个非可变类(immutable)。什么是非可变类呢?简单说来,非可变类的实例是不能被修改的,每个实例中包含的信息都必须在...
  • IPJMC
  • IPJMC
  • 2011年05月21日 14:52
  • 411

Java中的字符串缓冲池——String pool

在thingking In Java 中这样说到: String manipulation is arguably one of the most common activities in com...
  • Goskalrie
  • Goskalrie
  • 2016年02月19日 11:11
  • 584

Java String类对象引用、字符串常量和String Pool 相互关系的学习

Java中的数据类型及其存放的
  • rover0321
  • rover0321
  • 2014年06月22日 16:21
  • 575

Java中的String和String pool

在java中有两种方式创建字符串 1.字面量方式创建字符串 String name = "tom";2.new关键字创建字符串 String name2 = new String("jerry...
  • dhassa
  • dhassa
  • 2017年06月12日 00:08
  • 360

Java String intern() 和 String Pool

在jdk里,String类型是最常用的api之一,我们在背面试宝典的时候,也经常有关于String 的知识点,但是我们只记得结论,比如我们会有以下问题: **1.“s1 == s2 是内存地址的对比...
  • lovejj1994
  • lovejj1994
  • 2017年07月01日 13:06
  • 98
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【java基础】String Pool
举报原因:
原因补充:

(最多只允许输入30个字)