java中字符串的不可变性

string的对象一旦被创建,则不能修改,是不可变的,其所谓的修改其实是创建了新的对象,所指向的内存空间不变。

String s1="hello";
	 s1=s1+"world";
	System.out.println("s1="+s1);
	
	String s3=new String("helloworld");
	System.out.println("子串  :"+s3.substring(0,5));
	System.out.println("s3="+s3);

上述代码执行结果为:
s1=helloworld
子串 :hello
s3=helloworld
语句:s1=s1+“world”;实际上只是将s1指向常量池中的helloworld,而s1实际上没有变化的。
由于复杂的操作会在常量池中生成大量的无用常量,所以看情况可以采用stringbuilder代替string
其两者的区别在于:
string具有不可变性,而stringbuilder不具备,所以当频繁操作字符串时,推介使用stringbuilder

你可能感兴趣的:(java学习记录)