DESKTOP-P665UA2_20200827-石家雨
1、问题
1、今天弄明白了一个重要的概念:
string对象是不可变的,所以是可以共享的。
String str1=“hello";
String str2=new String("hello");
str1 中的 “ hello “ 是放在字符串池中,而 str2 中的 ” hello “ 放在堆中的。
就是在堆中如果一个字符串已经被名称所引用,则以后再有相同的字符串声明时就不会再重新开辟空间,后面定义的可以继续使用之前的已开辟好的堆内存空间
在这个对象池中保存多个对象,新实例化的对象如果已经在池中定义了,就不需要再重新定义,而从池中直取出继续使用。
2、已知字符串的内容不可改变
public class StringDemo01{
public static void main( String[] args ){
String str = " hello ";
str = str + " world ";
System.out.println( " str = "+ str );
}
}
但是运行结果是:str = hello world,
看起来 str 改变了,因为string的对象不可变,实际上这两个对象没有关系
2、吐槽
今天一整天没有犯困,希望以后继续保持。
点赞