想交换字符串中的元素String str="this is a string";
char ch;ch=str.charAt(i);
str.charAt(i)=str.charAt(j);//出错,为何str.charAt(i)不是变量?

解决方案 »

  1.   

    charAt(int i) 是返回第i个字符,它并不是变量。它只是一个getter,并不是提供一个接口让你访问/设置变量留意
      

  2.   

    str.charAt(i)=str.charAt(j);相当于在java中进行如下赋值运算:
    'a'='b'换成ASCII形象就是:97=98
    你自己仔细想下能行得能吗?java中单行语句成立的最终条件是[返回一种java中已确定的对象类型值],如:
    'a'=='b';//(返回false)
    int a=0,b=2;
    a=b;//(返回一个int值)
    /**************自己再多想想*************/
      

  3.   

    charAt()返回的是值,不是引用,所以不能放在赋值操作符的左边,也就是说它不是一个左值.
    另外,由于String 是一个不变类,所以它不可能提供任何方法给你来修改这个String内部的值的.
      

  4.   

    如果想实现交换, 必须引入char[] 或 StringBuffer等才行.或者重新构建一个String