public class Test{ 
   public static void stringReplace(String text){ 
     text=text.replace('j','l'); 
    } 
    public static void bufferReplace(StringBuffer text){ 
      text=text.append("a"); 
     } 
   public static void main(String args[]){   
      String textString=new String("java"); 
      StringBuffer textBuffer=new StringBuffer("java"); 
      stringReplace(textString); 
      bufferReplace(textBuffer); 
      System.out.println(textString); 
    } 
 } 这个程序运行后是
javajavaa
为什么不是
lavajavaa?
StringBuffer和String又有什么区别?

解决方案 »

  1.   

    public String replace(char oldChar,char newChar)
    Returns:a string derived from this string by replacing every occurrence of oldChar with newChar.public StringBuffer append(char c)
    Returns:a reference to this StringBuffer object.
      

  2.   

    public static void stringReplace(String text){ 
         text=text.replace('j','l'); 
        } 
    这是一个传值的函数,不能在函数里面改变参数的值
    要改变的话可以用一个返回值
      

  3.   

    楼主错误的理解了java中函数的参数的概念,在你的函数中虽然改变了参数的值,但是该值的作用范围只在函数体内,也就是说,出了函数体,这个值就是不可见也是无效的,所以无论你怎么调用你的函数,最终输出的值都不会改变。