我是这样理解的:当改变一个String类型对象的值时,都会导致一个新的String类型对象的生成。第1方法是在Java编译器编译的时候隐性实例化了StringBuffer 对象,把“a”“b”“c”添加到StringBuffer 里面然后返回一个字符串:String tmp=(new StringBuffer().append("a").append("b").append("c")).toString();第2种方法跟第1种差不多一样,只是他是先声明一个String tmp ,然后tmp+= "a"; Java编译器编译的时候也是隐性实例化了StringBuffer 对象,然后把"a"添加到 StringBuffer里面返回一个toString(),下面的加“b”“c” 跟加“a ”一样的。 第3中方法其实是把第1中方法细分了而已。
不知道我的看法大家是否认同,如理解有误,还请指点一下。 |