传参数时 类能被改变,但变量不行类 StringBuffer ,Integer,Boolean,Vector,Double等变量 int ,boolean, String,float ,double等

解决方案 »

  1.   

    那么为什么如果
    s.append("C");
    s=new StringBuffer("temp");
    这样回到函数外面后仍然是 JavaC 呢?
    而且,如果第二句在第一句前面,那么append也没有起作用了
      

  2.   

    请注意这里参数传过去时是传地址 
    S是在这个地址上作了append()所以改变了值 
    而对M中的S2的操作是赋值,这是就会使这个S不再指向原来的S,重新开了一个内存空间,值为JavaC 。但原来的S没有影响。
      

  3.   

    public static void Hello(StringBuffer s, String c) StringBuffer 参数是对象用的是“引用”(也就是是指针),所以他会变化。而String c 是基本的数据类型,函数就copy了,不会改变数据的值。
      

  4.   

    那是因为s.append("C")改变了s所引用的对象
    而s=new StringBuffer("temp")只是让s指向了一个新对象,并不改变s原来引用的对象
      

  5.   

    s.append("C");
    s=new StringBuffer("temp");s = new StringBuffer("temp") 新建立了一个对象,改变了s的值(指向另外一个对象了)。但是对函数外面的对象却没有影响。
      

  6.   

    哦,原来是这样,那么那些Stack也是同样道理啦?
    明白了!
      

  7.   

    请注意这里参数传过去时是传地址 S是在这个地址上作了append()所以改变了值 而对S的操作是赋值,这是就会使这个S不再指向原来的S,重新开了一个内存空间,但原来的S没有影响。 原来的S值为JavaC 。