Java基础回顾 : String类的内存分析

String类的内存分析:

        在Java之中有一种称为共享设计模式的概念.在JVM的底层会存在有一个对象池,在对象池之中会保留有已经开辟空间的对象,那么String就是利用了对象池的概念,当利用直接赋值的形式定义一个字符串时,第一次会开辟新的堆内存空间,但是随后会将此对象保存在池之中,如果下次同样使用直接赋值的形式,那么会直接取出对象池中保存的对象继续使用,并且不会开辟新的内存空间. 

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. String str1 = "Hello";  
  2. String str2 = "Hello";  
  3. String str3 = "Hello";  

 

 



String类对象两种实例化的区别?
1.构造方法:会产生两块内存空间,其中一块将成为垃圾,并且不会自动入池保存,用记可以通过intern()方法手工入池;
2.直接赋值:只会产生一块堆内存空间,可以自动入池保存.

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. String str = new String("Hello");  

★ . 另外需要说明的是,当字符串一旦声明之后,那么字符串的内容是不可能被改变的.当我们使用字符串连接符("+")进行操作时,改变的不是字符串本身,只是对字符串进行了重新组合生成新的字符串,新的字符串内存地址和原来的内存地址不同.改变的只是指向的内存地址.

posted @ 2016-12-06 13:44  天涯海角路  阅读(130)  评论(0)    收藏  举报