public static void add(StringBuffer x,StringBuffer y){
x.append(y);
y=x;
}
/**
* @param args
*/
public static void main(String[] args) {
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
add(a,b);
System.out.println(a+","+b);
}解释输出结果
解决方案 »
- 输入输出问题
- 各位大牛,如何在JAVA里面实现倒排表
- 关于异常的问题
- 明天去中软国际面试,有去过的兄弟么?说说情况,都考些啥啊?
- 关于字符串比较是不是==就可以
- 为什么调用clone函数会有这样的错误呢?
- 谁能告诉我到哪里下载java联机帮助,谢谢!
- 可否有高手拿java做过和移动短信平台的接口开发?(讨论者有分)
- 那里有<< The Java Class Libraries,Second Edition,Volume 1>>这本书,中文版的有吗
- JavaScript如何能把ASCII转换在字符串?
- java 中播放音乐的问题
- 用JSP写个信息管理系统,使用的数据库是mysql,不知道mysql可以用图形界面的吗?
理论上讲,java没有什么值传递和引用传递之分,传进去的都是值 ,但是问题是,如果传入的是类的话,不是java基本类型,那么这个值就是指向该类的一个指针值 ,
所以当参数时类的时候,就相当于引用传递。
正解:AB,B
给你简单描述一下这个程序执行时的内存操作
1. a,b分别指向 A,B
2. add() x,y 分别指向 A,B
3. x.append(y) 将A修改成AB
4. y指向AB
这时 a,x,y 分别指向 AB
b指向 B
5.释放x,y
a-->AB
b-->B
所以输出AB,B
不知道你明白了没?
那么y=x为什么不能使b的值改变呢,不是一样的传的俩个StringBuffer对象么?
给你简单描述一下这个程序执行时的内存操作
1. a,b分别指向 A,B
2. add() x,y 分别指向 A,B
3. x.append(y) 将A修改成AB
4. y指向AB
这时 a,x,y 分别指向 AB
b指向 B
5.释放x,y
经过大家的分析,我明白了java中的值传递和引用传递,谢谢大家的帮助!!!