当前位置:编程学习 > JAVA >>

关于String 传址传值?

java对对象的传递是传址,对基本类型的传递是传值 
有下面一个测试程序 
public   class   Test{ 
    public   void   ChangeString(String   s){ 
        s   =   s   +   "   Changed "; 
    } 
    public   static   void   main(String   args[]){ 
        Test   test   =   new   Test(); 
        String   name   =   "name "; 
        System.out.println( "before   : "+name); 
        test.ChangeString(name); 
        System.out.println( "after   : "+name); 
    } 

按照对象传址理解,调用方法以后name应该发生变化,而实际上却没有,不知道谁能解释一下! --------------------编程问答-------------------- 两个问题:
1、Java没有传址的概念,只有传值,对象传递的也是引用的值;不要把C的概念用在Java上,会彻底混乱的。
2、String是不可变的。

如果你想得到你期望的那种效果,换一个对象,把String换成 StringBuilder:
public void ChangeString(StringBuilder s){  
  s.append(" Changed ");  
}
这样可以看到效果。


如果你企图这样做:
public void ChangeString(StringBuilder s){  
  s = new StringBuilder(s + " Changed ");  
}
一样是失败的。
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,