记住:
String是不变对象,而StringBuffer不是
Java中对象都是引用,或者说方法调用中传递的是对象的指针有了上面的规则,程序的结果就不难理解了!
0. 在调用test()方法后,开始时传递进来的s和s2相当于两个指针,分别指向
main()中的s和s21. 在//3处 s2=s ,所以s2.append("hah") 的结果是修改了main中的s值,因此在main中的//9显示出来s的结果就是goodhah2.在test()中一直没有修改main()中的s2所以s2只不变,始终是"bad"
如果你把StringBuffer改成Date,程序作些相应的修改,你可以很容易理解上面的Java以对象引用方式传递参数的机制!
String是不变对象,而StringBuffer不是
Java中对象都是引用,或者说方法调用中传递的是对象的指针有了上面的规则,程序的结果就不难理解了!
0. 在调用test()方法后,开始时传递进来的s和s2相当于两个指针,分别指向
main()中的s和s21. 在//3处 s2=s ,所以s2.append("hah") 的结果是修改了main中的s值,因此在main中的//9显示出来s的结果就是goodhah2.在test()中一直没有修改main()中的s2所以s2只不变,始终是"bad"
如果你把StringBuffer改成Date,程序作些相应的修改,你可以很容易理解上面的Java以对象引用方式传递参数的机制!
解决方案 »
- 问个SSH的初级问题,初学者困惑
- 扫盲贴,主键
- hibernateTemplate.save(Object) ID策略问题。。
- 请问,我的myeclipse启动不了了,启动时总弹出一个对话框,说:jvm terminated. Exit code=1,下面还有一大串
- 为什么我使用了延迟加载过滤器,仍然出现session is closed的异常
- eclipse 工具问题?
- 在struts中用DataSource连接数据库,能不能让它在连接不上的时候自动断开,不再尝试去连接了
- 请教高手,哪里可下载struts 1.0版
- 求Jboss3.2+CMP+Oracle 实现字段自增的解决方案(下班前揭帖,6月27日)!!!!
- 哪位高手知道哪里有应用在网络传输中的加密IO流,谢谢!(在线等待)
- 部署EntityBean不成功,帮忙给看一看,先谢过了.!
- 能介绍一下SUN ONE SERVER7的功能么?我是一个java语言的超级菜鸟
语句: s2=s;//3
说明:s2 指向同样的 s 地址。以后s2内容的改变,将不影响main中的 s2。语句: s=new StringBuffer("new");//4
说明:s指向新的地址,s, s2地址不同。语句: s2.append("hah");//8
说明:改变main中的 s。
我的一分耕耘,你能给一分收获