a.charAt(i)=a.charAt(j) 问题在哪?

public static void main(String args[]){
    String a="abc";
    char temp=0;
    for (int i = 0,j=a.length()-1;i<j; i++,j--) {
        temp=a.charAt(i);
        a.charAt(i)=a.charAt(j);
        a.charAt(j)=temp;
    }
    for (int i = 0,j=a.length()-1;i<j; i++,j--) {
        System.out.print(a.charAt(i));
    }
}

字符串做反转 思路是字符串第一个和最后个进行交换 但是现在报错a.charAt(i)=a.charAt(j); a.charAt(j)=temp说是应为变量 不太明白这个意思 ;请问这个思路错在哪? (其他方法我知道 我只想知道这个思路错在哪里)

我们先看看charAt的源码

    public char charAt(int index) {
        if ((index < 0) || (index >= value.length)) {
            throw new StringIndexOutOfBoundsException(index);
        }
        return value[index];
    }

就是就是返回数组下标index的char 元素,比如 String a="abc"; a.charAt(1)--> 'b',这不是一个变量而是一个char 字符
a.charAt(i)=a.charAt(j); ---> 你给一个char 字符赋值 当然不允许


a.charAt(i)=a.charAt(j)
改为
a[i]=a.charAt(j)

了解charAt方法 他是返回字符串对应索引位置的字符,是不可以进行值的修改 替换要把字符串a转换为字符数组cahr[] arr = a.toCharArray() 然后循环这个 最后把值改变 arr[i] = temp

a.charAt(i)是一个从字符串取出来的临时变量,对他赋值并不能修改字符串本身,应该先把字符串同toCharArray转换成字符数组,再进行处理