String类的内存分析:
在Java之中有一种称为共享设计模式的概念.在JVM的底层会存在有一个对象池,在对象池之中会保留有已经开辟空间的对象,那么String就是利用了对象池的概念,当利用直接赋值的形式定义一个字符串时,第一次会开辟新的堆内存空间,但是随后会将此对象保存在池之中,如果下次同样使用直接赋值的形式,那么会直接取出对象池中保存的对象继续使用,并且不会开辟新的内存空间.
String str1 = "Hello";
String str2 = "Hello";
String str3 = "Hello";
String类对象两种实例化的区别?
1.构造方法:会产生两块内存空间,其中一块将成为垃圾,并且不会自动入池保存,用记可以通过intern()方法手工入池;
2.直接赋值:只会产生一块堆内存空间,可以自动入池保存.
String str = new String("Hello");
★ . 另外需要说明的是,当字符串一旦声明之后,那么字符串的内容是不可能被改变的.当我们使用字符串连接符("+")进行操作时,改变的不是字符串本身,只是对字符串进行了重新组合生成新的字符串,新的字符串内存地址和原来的内存地址不同.改变的只是指向的内存地址.