A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王新年 中级黑马   /  2014-1-7 14:31  /  797 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package st;

public class Tests {
        public static void main(String[] args) {
                // TODO 自动生成的方法存根
                String s1="wxn";
                String s2="ynn";
                StringBuffer sb1=new StringBuffer("wxn");
                StringBuffer sb2=new StringBuffer("ynn");
                method(s1,s2);
                //既然StringBuffer 是引用类型为什么在调用该方法后s1没用改变值
                System.out.println(s1+"......"+s2);
                method1(sb1,sb2);
                //由于StringBuffer是引用类型所以sb1的值会改变
                System.out.println(sb1+"....."+sb2);
               

        }
   public static void method(String s1,String s2){
         //  s1=s2;
           s1.replace('w', 'y');
   }
   public static void method1(StringBuffer sb1,StringBuffer sb2){
           //sb1=sb2;
           sb1.append("wxn");
   }

}


求技术分

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

3 个回复

倒序浏览
麻烦lz把代码写在代码框好不,这样看着太闹心啊!{:soso_e118:}
回复 使用道具 举报
String对象建立时没有用new关键字,还是值传递
回复 使用道具 举报
package com.itheima;

public class Tests {
        public static void main(String[] args) {
        // TODO 自动生成的方法存根
        String s1="wxn";
        String s2="ynn";
        StringBuffer sb1=new StringBuffer("wxn");
        StringBuffer sb2=new StringBuffer("ynn");
        method(s1,s2);
        //既然StringBuffer 是引用类型为什么在调用该方法后s1没用改变值
        System.out.println(s1+"......"+s2);
        method1(sb1,sb2);
        //由于StringBuffer是引用类型所以sb1的值会改变
        System.out.println(sb1+"....."+sb2);
        

}
public static void method(String s1,String s2){
/*先定义一个字符串来区分,这样更有助于你理解。String oldStr
* s1为引用型变量,指向字符串s1,为了区分我们把引用型变量称为s11
* 当s11.replace('w', 'y');时候如果在字符创中有字符'w',则替换成功,则创建一个新的字符串newStr = “yxn”;
* 但是s11指向的字符串oldstr没有改变,所以打印的还是老的字符串
*/
        //  s1=s2;
   s1.replace('w', 'y');
}
public static void method1(StringBuffer sb1,StringBuffer sb2){
   /*
    * sb1.append("wxn")这句代码中是往这个引用sb1指向的序列中家中一个序列,所以sb1指向的序列发生了改变
    * */
        //sb1=sb2;
   sb1.append("wxn");
}

}
这是我的理解希望对你有帮助,我也是刚弄明白这个问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马