java中的string类型的对象是可以更改的!

来源:百度知道 编辑:UC知道 时间:2024/06/02 03:22:24
java的很多参考书都说string类型的对象是不可更改的。然而这句话的真正意思是,string类型的对象没有更改自己对象的值的方法;然而StringBuffer类却拥有能更改字符串对象的方法。要想更改String对象的值,用对象的方法不能实现,却可以简单的使用赋值语句实现,如下:
String name="argo"
name="ka"+name;
以上是我的理解,这样理解对吗?

哥们,多看看基础.
首先,String和StirngBuffer是两中完全不同的实现,他们构建得基础思想就不一样,String得对象是固定得,比如
String name="argo"; // 只要对一个String对象赋值,或是new一个String对象,那么就会新分配一个String对象.这里是新建立一个String对象,对象得内容是"argo",然后将指向此内容的引用赋值给name.
name="ka"+name; //这里是又新建立了一个String对象,对象得内容(不是引用)是"kaargo",然后将此对象得引用赋值给了name.而name上原来得引用被丢弃,这时,上次分配得内容为"argo"得对象会被垃圾回收机制回收,但回收机制不是我们可以控制得,虽然可以认为得调用gc()函数执行.但也不一定就执行,这在于jvm.

错。name="ka"+name; 是在内存的字符串池中创建了一个"ka"+name的字符串,然后把name这个指针指向了这个新的字符串。

那是把引用改了,name="argo" 这时的name指向 一个引用,name="ka"+name; 又重新指向一个引用