当前位置:  技术问答>java相关

一个有关String的问题

    来源: 互联网  发布时间:2015-04-20

    本文导语:  class TestCommon{ static String s1 = "111"; static StringBuffer s2= new StringBuffer("111") ;  void m1( String s ) {  s = s.concat("hello");  }  void m2( StringBuffer s ) {  s = s.append( "hello") ;  }   public static void main(String...

class TestCommon{
static String s1 = "111";
static StringBuffer s2= new StringBuffer("111") ; 

void m1( String s ) { 
s = s.concat("hello"); 


void m2( StringBuffer s ) { 
s = s.append( "hello") ; 
}  
public static void main(String args[]) {
TestCommon app=new TestCommon();
app.m1(s1);
app.m2(s2);
System.out.println("s1="+s1);
System.out.println ("s2="+s2);
}

}
s1的输出是“111”
s2的输出是“111hello”
为什么s1的输出还是“111”呢?

|
Java中的参数传递是和C++不一样的。
对于这样的函数
class A{
      void fun1(A o)
      {
         o = null;
      }
      public static void main(String args[])
      {
         A a = new A();
         A b = new B();
         a.fun1(b);
         这里执行完了,b!=null;
      }
}

但如果这个传递是C++的引用传递的话
结果就不一样的,b=null;

所以,Java对象参数传递类似于C里面的指针值传递。
fun1(void *p)
{
  p = NULL;//这是无效的;
  *p  = 1;//这是有效的
}

也就是说,在Java中你能改变作为参数传入的对象实体的成员,
但不能改变对像实体的本身。
也就是说第一个帖子中的那两个函数的赋值运算是没有什么用处的。

|
虫子说的很正确,String.concat()创建的是一个新的String,也就是说它返回的是一个新的字符串对象,对原对象没有影响。看看下面的程序可能对你有所帮助。
class TestCommon{
    static String s1 = "111";
    static StringBuffer s2 = new StringBuffer("111") ; 

    String m1( String s ) { 
        s = s.concat("hello"); 
return s;
    } 
    
    void m2( StringBuffer s ) { 
        s = s.append( "hello") ; 
    }  
    public static void main(String args[]) {
        TestCommon app = new TestCommon();
        String ss = app.m1(s1);
        app.m2(s2);
        System.out.println("s1 = "+s1);
System.out.println("ss = "+ss);
        System.out.println ("s2 = "+s2);
    }

}

|
static String s1 = "111";
static StringBuffer s2= new StringBuffer("111") ; 

void m1( String s ) { 
     s = s.concat("hello"); 
}

s1 向方法m1中的s传递一个值,而s的值的改变不会影响s1的值.
s2 向方法m2中的s是按引用传递的,所以s 的值的改变会影响s2的值.






    
 
 

您可能感兴趣的文章:

  • 有关java中String类的方法的一个问题,急用!!!
  • 有关session中的getAttribute(java.lang.String name)的问题???
  • 求教有关smartupload的问题,有关就给分!!
  • 有关在sco unix5.0.4下有关网卡设置的问题(非常急,高分相送)
  • 有关snmp的一个很菜,但是困扰了我很久的问题,有关工作原理的,望大家赐教
  • 有关ResultSet的问题,帮助解决问题者另外加分...
  • (菜鸟问题)有关目录中文件执行的问题???
  • 有关Qt下编译的环境问题
  • 有关裁减内核及shell命令的问题
  • 有关cocoon的问题??
  • Helper! 有关Jbuilder使用问题???
  • 有关swing的问题,请高手回答
  • 一个有关分数的问题
  • 有关pcmaclan的打印机共享问题
  • 请教有关samba共享名大小写的问题
  • 想看一下吗?有关swing 组件的问题?
  • 有关L的问题(菜鸟求教)???
  • 有关jsp服务器的一个问题
  • java 进阶级问题,有关网络的问题,请多多帮助
  • 有关Liunx 的最低配置问题
  • 有关环境的问题
  • 请教有关konqueror 问题?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ​有关Docker的八个令人难以置信的事实
  • 有关内码转换(跟HttpServletRequest有关)
  • 求有关png图像处理的libpng库的有关中文资料
  • 大家推荐一下有关LINUX7有关的网络编程的书。最好是比较全面的!比较经典的。
  • 有关KDevelop-3.0.4-0.1.i386.rpm的有关软件包
  • 有关KDevelop编程的资料
  • 有关集群与数据同步
  • 请教有关英文简历方面的词句!
  • 求有关png图像处理的libpng库的有关中文资料 iis7站长之家
  • 请各位大哥告知JAVA中消息机制的有关资料,拜托!
  • 有关jbuilder
  • 我想看看有关Linux和Unix的源码,有什么好的建议
  • 有关J2ME的帮助文档!
  • 100分求助 能不能提供一些有关图像分割的算法和实现代码!谢谢
  • 在哪里可以弄到有关tomcat配置方面的资料?
  • 请问哪里有jboss有关配置的教程,最好是中文的,先谢了
  • 哪位兄弟知道有关QT的资料可以下,,谢谢!
  • 有关学习java的电子图书网址
  • 请介绍一本有关i386体系结构、汇编的书。
  • 有关shell返回值
  • 高分请教:请问怎么才能得到最近所有有关文件操作(新建,删除等)的记录


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3