String
对象而设置的一个缓存池,Java1.7之前设置在方法区上,保存的是String对象;Java1.7之后设置在堆上,保存的是String
对象的引用,String
对象本身存在于堆上的其他位置。下文中以Java1.7之后的情况为标准。Integer
、Long
等Wrapper类型也有自己的缓存池,比如Integer
会缓存从-128~127的Integer
对象,当使用字面量赋值或者Integer.valueOf()
时,如果池中存在相应的对象,就会返回池中的对象,只有当池中没有时才会在堆上创建新对象。