我写的下面的程序但是它的两次输出都是一样的!不知道为什么!请指教!谢谢
package untitled8;
import java.lang.*;
import java.io.*;
public class li{
  public static void main(String arg[]){
    String s="I love java";
     System.out.println("原来的是:"+s);
    s.replace('o','a'); 
     System.out.println("现在的是:"+s ); 
  }
}

解决方案 »

  1.   

    要这样
     s = s.replace('o','a'); 
    replace不改变原String的内容
      

  2.   

    read JDK carefully:
    Returns a new string resulting from replacing all occurrences of oldChar in this string with newChar.public class li
    {
       public static void main(String arg[])
       {
         String s="I love java";
          System.out.println("原来的是:"+s);
         String t = s.replace('o','a'); 
          System.out.println("现在的是:"+t ); 
       }
    }
      

  3.   

    String内容不可变。
    1.注意method是否改变了类的field域。
    2.注意method的return type。
      

  4.   

    s没有变,但是s被replace的结果变了,你又没有对s重新赋值。
      

  5.   

    s.replace('o','a'); 
    这样只是创建了一个新的string对象,而你的s引用还是指向了原来的I love java,所有你的输出就没有改变了。
      

  6.   

    源代码下载!
    基于j2ee平台的大型电子商务网站源代码下载 :本源代码可以帮助大家了解大型物品买卖和交换网站如淘宝,易宝乐等网站的开发和创建。
    下载地址: http://www.ebaole.com/sourcedown.html
    并且开辟了一个社区专门为大家提供源代码的交流和讨论!
      

  7.   

    final String内容不可变是指什么不可变呀
    String s = "I love Java";
    s = "He love C++";
    这样不是可以吗?
      

  8.   

    用StringBuffer,就可以不从新赋值.
      

  9.   

    String 对象是不可变的酶对他的方法调用一次都会有一个新的String构造出来如果新的没有被引用当然你也就得不到你想要的值了所以s = s.xxx();才会使s有新值s.xxx()是不会改变s的