资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

String对象作为参数传递给函数的问题

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

请看代码:  
  class   test  
  {  
          public   static   void   main(String   args[])  
          {  
                  String   str   =   new   String();  
                  StringBuffer   sb   =   new   StringBuffer();  
                  Function(sb);  
                  Function(str);  
          }  
          private   static   int   StringToUnicode(StringBuffer   strDst)  
          {  
                  strDst.append("hello   world");  
                  return   strDst.length()   /   2;  
          }  
   
          private   static   int   StringToUnicode(String   strDst)  
          {  
                  strDst.concat("hello   world");  
                  return   strDst.length()   /   2;  
          }  
  }  
  为什么main函数中:sb能够被改变,而str不能被改变呢??java传递的不是引用吗?为什么不能改变实参的值呢??初学java请大家多指点谢谢!!

网友回答:

发表者:lovelymaomao

String是final类。。。String对象是不可以改变的!

发表者:kangi_hao

String类是不可变对象,一个String对象在创建时状态就固定下来,以后是无法改变的。而StringBuffer是可变对象,对象被创建后,可以通过append等方法加以改变。  
  在java中可变对象、不可变对象是非常重要的概念。

发表者:tianlujun

你的Fcution没有定义A!  
  ,这个程序好像不能运行吧!

发表者:ant_bug

To:lovelymaomao(小老鼠)    
          固然String是不可变的,但不能通过String类是final   class来推导。  
   
  To   楼主:  
          因为String是不可变的,它的操作将产生一个新的对象,因此以上函数,得不到你预期的效果,可以改成以下代码  
                  strDst   =   strDst.concat("hello   world");  
                  return   strDst.length()   /   2;  
 

发表者:howelltech

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html

发表者:cold_blooded

诸位楼上说的都没错,补充一点。  
   
  对于频繁做字符窜变更时,要尽量使用StringBuffer,如程序中拼SQL文,电文解码等。  
   
  因为String   对象不可变,每次赋新值仍然是那个对象。  
  String   a   =   "1";a   =   "2";   a   =   "3"                       -------对象不变  
  若要生成新对象就必须new,   a   =   new   String("4");------新对象,原来的成了垃圾  
   
 


 

 
热门推荐笔记本: IBM笔记本
相关文章:
笔记本相关:
IT技术文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved