标签:
String s=“abcd”;
上面的语句定义了一个字符串变量s。该变量指向字符串“abcd”,当初始化变量s时,会在堆中为s非配内容空间。例如以下图所看到的:
当将字符串变量,赋值给还有一个字符串变量时,比如:String s2=s。
此时。s2和s是同样的字符串对象。例如以下图所看到的:
当一个字符串连接其它字符时。他就指向了新的字符串对象,比如。s=s.concat("ef“)。 例如以下图所看到的
当一个字符串在堆中被分配内容时,它就是不可变的,不论什么String的方法都无法改变字符串本身,但它能够返回一个新的字符串对象。
假设须要能够改动的字符串对象,能够使用StringBuffer和StringBuilder,StringBuffer是线程安全的,因为StringBuilder不须要进行同步操作,StringBuilder是比較高速的。
假设字符串是可变的。改变还有一个字符串变量。就会使还有一个字符串变量指向错误的值。
标签:
原文地址:http://www.cnblogs.com/gcczhongduan/p/5134898.html