y=x;
这一句没有任何意义,这只是改变了局部变量的指向,并没有修改哪一个对象,所以对外部无影响。而且永远不要对局部变量进行赋值操作(如a = b),尽量不要修改局部变量的值(如a++),除非你200%地清楚你在干什么,并且这样做非常必要。
这一句没有任何意义,这只是改变了局部变量的指向,并没有修改哪一个对象,所以对外部无影响。而且永远不要对局部变量进行赋值操作(如a = b),尽量不要修改局部变量的值(如a++),除非你200%地清楚你在干什么,并且这样做非常必要。
解决方案 »
- java 引用变量基础问题,菜鸟中的菜鸟求教。 哎蛋都碎了。。。
- 像QQ邮箱一样,点上传文件就马上能显示文件大小
- 学习design pattern中,请教一个Bridge模式的问题
- excel导入的问题
- struts架构下,JBUILD环境,jsp页面上传图片出现小部分数据丢失。请指点迷津。
- jspsmartupload实现上传时的问题(关于表单问题)!!前几天提过,但还是有问题!!高手指点!!
- tomcat中一直困惑我的问题。高手多帮忙!~谢谢。
- 急!TOMCAT架好了,修改默认页面
- 关于J2EE环境搭建的疑问(I'm a newbie)
- 求助各位大神们,用java写一个能汇总不同格式excel表的系统,要用到什么技术啊
- SSH分页查询问题
- hibenate 实体类中的集合属性问题
public static void operator(StringBuffer x,StringBuffer y){
// x 的拷贝变为了AB,x 的拷贝和x 指向同一个内存地址,所以x 变为了AB
x.append(y);
// y 的拷贝指向了x 的拷贝的地址,也就是x 的地址,那么y 的拷贝将不再影响y 的指向
// 所以 y 的值依然为B
y=x;
}
记着一点就行了,java传递的是拷贝,在方法内改变了拷贝的指向,那么后面做的任何事情都不影响原值了
如果在 y=x; 后再添加一行 y.append("hello"); 那么a 的值就变为 ABhello 了
public class Foo {
public static void main(String[] args) {
StringBuffer a=new StringBuffer("A"); //开辟一块内存 id=21
StringBuffer b=new StringBuffer("B"); //开辟一块内存 id=25
operator(a,b);
System.out.println(a+","+b); //打印出来内容是 内存地址的存放内容
}
//注意了。id21,id25两个StringBuffer传过来
public static void operator(StringBuffer x,StringBuffer y){
x.append(y); //这个操作,id21的值变成了‘AB’
// y.append(x); 在y=x既是改变y的id之前,你试试 ,输出不一样哦
y=x; //这个操作,把y的id由id25变成id21,之后操作y也不会改变id25的值
// y.append(x); 在y=x既是改变y的id之后,你试试 ,输出不一样哦
}
}建议:多理解基础,这都是原理的东西