首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

Java中的字符串 存在堆中仍是栈中

2013-01-19 
Java中的字符串存在堆中还是栈中Java?堆栈字符串[解决办法]String s java这里java是存放在常量池中

Java中的字符串 存在堆中还是栈中
Java中的字符串  存在堆中仍是栈中 Java? 堆 栈 字符串
[解决办法]
String s = "java";
这里"java"是存放在常量池中,而这个常量池是JVM开辟的一块特殊的内存区域,它不是栈,也不是我们创建对角存放在的那个堆。
理解了这句,相信你的问题可以自己思考出来了。
[解决办法]
String类是不可变类
String s = "Hello";   //--1
String s1=new String("World");//---2
方式1是申请的变量存放在常量池中的,这是java的性能优化所做的。也就是说每创建一个字符串,虚拟机就要创建一个新的对象,因为String是不可变类,因此,虚拟机做出优化,将字符串放入常量池,实现对不同字符串的引用。
第二种方法是使用new创建的对象,那么会在堆区申请内存,对于大量的这样的操作,这个开销是很大的,所以不建议使用第二种方式。
[解决办法]

引用:
String类是不可变类
String s = "Hello";   //--1
String s1=new String("World");//---2
方式1是申请的变量存放在常量池中的,这是java的性能优化所做的。也就是说每创建一个字符串,虚拟机就要创建一个新的对象,因为String是不可变类,因此,虚拟机做出优化,将字符串放入常量池,实现对不同字符串的引用……

+1

热点排行