package may.com;
public class TestOne {
public static void main(String[] args) {
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a,b);
System.out.println(a+","+b);
}

static void operate(StringBuffer x,StringBuffer y) {
x.append(y);
y = x;
}
}

解决方案 »

  1.   

    跑了一下,自己没有错。下面说下原因:
    x.append(),修改的是那个引用指向的对象,所以最后就变了。
    后一个虽然改变了指向,但是那是在一个局部方法里面的,在main方法中,b仍然指向“B”,没有改变。这个题目的关键还是:Java传递的是引用的值。over。
      

  2.   

    谢谢。又有了一个难题考regex的. 不能同时通过下面两种形式的EMAIL  请改一改
     [email protected]    [email protected] may.com;
    import java.util.regex.*;
    public class TestOne {

    public static void main(String[] args) {
    String email = "[email protected]";
    String email2 = "[email protected]";
    TestOne t = new TestOne();
    System.out.println(t.isMail(email));
    System.out.println(t.isMail(email2));
      }


    private boolean isMail(String mail) {
    Pattern p = Pattern.compile("\\p{Alnum}+@\\w+\\.\\p{Alnum}{2,3}[\\.\\p{Alnum}{2.3}]?");//高手改一下
    Matcher m = p.matcher(mail);
    String[] words = p.split(mail);
    if(m.find()&&words.length==0){
    return true;
    }else {
    return false;
    }
    }
    }

      

  3.   

    java语言中只有传值,无论传递的是基本类型还是引用类型变量,其值都不会改变,能改变的只是引用变量所指向的对象的状态。
      

  4.   

    AB,B    分析:x.append(y)时 x所指向的a对象的值发生变化, 而y = x;这句话只是将引用y指向了a对象,所以b对象的值始终没有变化。