java 字符串常量池
来源:互联网 发布:大型网站技术 Java中间 编辑:程序博客网 时间:2024/06/08 14:13
java中字符串的创建有两种形式,一是采用字面常量的形式,一种是采用new的形式。这两种字符串在内存储存上有一定的差异性,第一种字面常量形式,jvm单独维护一块内存区域称为字符串常量池或者字符串字面量池,目的是为了减少字符串对象的重复创建。第二种new的方式创建的对象在堆上,和其他堆对象没什么区别。
对于字面量的形式,每当有新的字面量被创建时,jvm会检查常量池是否有相同对象,如果有,则返回该对象引用,如果没有,则创建对象,放回常量池,并返回其引用。因此,对于下面代码,结果返回true:
String str1 ="abc";
String str2 ="abc"
System.out.println(str1==str2);
String对象之所以可以支持常量池,是因为String对象是final的,否则,假如上面的例子,如果str2改变,势必影响到str1同时更改。
通过new方式创建的String对象,和其他堆对象创建一样,没什么特别的地方。但是通过new创建的String对象,可以通过intern方法,将其导入到常量池,并返回常量池中该对象的引用。
1.6版本常量池位于永久区,但是永久区大小有限,很容易内存泄漏,因此1.7版本中,常量池就位于jvm堆中了。
0 0
- JAVA 字符串常量池
- java字符串常量池
- java字符串常量池
- java字符串常量池
- java 字符串常量池
- Java字符串常量池
- Java字符串常量池
- java 字符串常量池
- java字符串常量池
- Java 字符串常量池
- Java字符串常量池
- java字符串常量池知识
- java的字符串常量池
- java字符串常量池知识
- Java中的字符串常量池
- java字符串常量池知识
- java字符串常量池知识
- Java中的字符串常量池
- ORACLE特殊数据查询技术
- 翻转二叉树
- php 把多少秒数转化成多少时多少分多少秒
- which命令
- 仿照spring-boot实现一个简单的ioc容器(二)
- java 字符串常量池
- 析构函数是否应该标记为虚函数
- windows系统下多版本opencv安装及使用
- 线上FullGC频繁的排查
- 设计模式六大原则
- HDU
- Android性能提升之LeakCanary
- 给户外媒体来一次能看懂的分类
- 激活函数的区别优缺点对比