关于String的对象引用的问题

74 阅读1分钟
public String reverseWords(String s) {
    for(int i = 0;i<split.length;i++){
        char[] chars = split[i].toCharArray();
        int start = 0,end=chars.length-1;
        while(start < end){
            char temp = chars[start];
            chars[start] = chars[end];
            chars[end] = temp;
            start++;
            end--;
        }
        split[i] = String.valueOf(chars);
    }
}

这样可以将更改后的值赋值给String[] split,但是如果foreach用

for(String st:split){
...
st = String.valueOf(chars);

是不可以的,st还是未更改的,这是为什么? st是变了的,st只是对象的引用,存在栈上的,赋值给它它头也不会就指向别的String对象了