java下修改String数组的教训


for
(String str : strs){ str = str + “x”; }

上面的完全没效果,因为java里面String是不可变的对象。也就是说str=str+“x”;这一句话实际上创建了另一个字符串,然后让str指向了新的字符串。

我写出这样的代码是知道str无法被改变的,我当时想的是str不被改变,但是str的引用被改变了,那么数组是不是也就被改变了?

事实上,str 并不是 strs[i]。str被改变,str[i]还是没变,所以上面代码无效!

可以如下,改变数组里面引用的指向位置:

for(int i = 0; i < strs.length; i++){

  strs[i] = strs[i] + “x”

}

或者使用

String temp[] = new String[strs.length];

for(int i = 0; i < strs.length; i++){

  temp[i] = strs[i] + “x”;

}

 

 

posted @ 2013-11-12 19:56  Code Dancer  阅读(377)  评论(0)    收藏  举报