CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

关于StringBuffer问题,立即结贴!

楼主Raulgodle(赵蓓)2004-12-01 23:48:47 在 Java / Web 开发 提问

public   class   e5    
  {  
      public   static   void   main   (String   []   args)      
      {  
          StringBuffer   a   =   new   StringBuffer   ("A");  
          StringBuffer   b   =   new   StringBuffer   ("B");  
           
          System.out.println("a   =   "+a);//A  
          System.out.println("b   =   "+b);//B  
          operate   (a,b);  
   
          System.out.println("a   =   "+a);//AB  
          System.out.println("b   =   "+b);//B  
   
          System.out.println(a   +   ","   +   b);  
      }  
      static   void   operate   (StringBuffer   x,   StringBuffer   y)  
      {  
          System.out.println("x   =   "+x);//A  
          System.out.println("y   =   "+y);//B  
   
          x.append(y);  
          System.out.println("x   =   "+x);//AB  
          System.out.println("y   =   "+y);//B  
   
          y   =   x;  
          System.out.println("x   =   "+x);//AB  
          System.out.println("y   =   "+y);//AB  
      }  
  }  
   
  问:该程序中最后打印的为什么是AB,B?而不是其他? 问题点数:20、回复次数:3Top

1 楼dlxu(脱离纯粹Coding阶段)回复于 2004-12-01 23:57:22 得分 20

在传入operate参数的时候,其实是在operate方法的内存空间中复制了一个原来StringBuffer   b的引用,你改变了副本引用,也就是其实是副本中原来指向b的指针指向a了,但是在main函数中b的引用并没有改变,而对于a就不一样了,在operate方法中并没有改变副本a(也就是x)指向的对象,而是改变了指向对象的值,相当于把指向的对象本身的内容变更了,所以自然原来a的值也跟着要变化,所以还是AB,BTop

2 楼wenming168(清风)回复于 2004-12-02 08:23:39 得分 0

同意     dlxu(沿着Java继续前进)    
  在java中只有传值,没有传址Top

3 楼wooyuping(LondonFog◎伦敦雾)回复于 2004-12-09 10:35:09 得分 0

还是不太明白,什么时候改变了副本引用,什么时候没有改变副本引用,可以说得更详细一点嘛???谢谢了~~~Top

相关问题

  • StringBuffer
  • 在线等待;立即结贴。
  • 立即结贴系列--什么是OLE
  • ++++ 立即结贴:两列相减 ++++
  • 立即接贴!
  • 总被驴子踢,散分!立即结贴!
  • §§§§§§§§§§§§★★★★★★★★★★winsock编程经典问题,立即结贴★★★★★★★★★★§§§§§§§§§§§§§
  • 错在那里?全程在线,解决问题,立即结贴!
  • 两个问题,在线等待,立即结贴,给500分。
  • 简单问题,先答先给分,成功后立即结贴!

关键词

  • stringbuffer
  • 引用
  • 指向
  • 副本
  • ab
  • 改变
  • println
  • 值
  • 对象
  • operate

得分解答快速导航

  • 帖主:Raulgodle
  • dlxu

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo