java语法的提问

来源:百度知道 编辑:UC知道 时间:2024/09/20 21:24:04
public class a {
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) {
StringBuffer z=x.append (y);
y=z;
System.out.println(z);}}
小弟编写以上新程序。向高手请教几个问题:
1.当a追加b的时候,是不是变成了AB? z就是AB?打印结果也是z=AB
2.既然z=AB ,那么z赋值给b时,为什么b还是B呢?糊涂了,谢谢!
嗯。追加这快小弟明白,可是y=z是怎么理解呢?为什么不是把z赋给y呢?太谢谢你了!

z就是StringBuffer z=x.append (y); 这句话,所以z就是x.append (y),也就是AB。

下面的y=z并不代表说直接就把z赋值给b,虽然x.append (y)这句把a的长度改变了,也就是说这时main方法里的a的值被改变了,但是b是不变的。

也就是说最后a=AB,b=B,z=AB。楼主可以把上面的x.append (y)改成y.append (x)看一下,这样最后就会变成a=A,b=BA,z=BA。

其实y=z这句话在这里只是改变实参y的值,并没有改变形参b的值,你可以把y打印出来看一下,y的值也是AB。但是这个改变过的y是无法改变形参b的。

像这样单纯改变实参的值是不会对形参的值有影响的。