可以这样嘛,说的好让人费解呀
是这个意思吗?
pulic string getName(string name){
    name = "def";
    return name;
}
string name = getName("abc");

解决方案 »

  1.   

    ^_^,这个问题有回到了以前的老问题,就是传值还是传址,按道理说String是对象,是应该传值的,但是那,往往好像又不是那样.
    你这样做应该可以解决:
      String strName = new String("abc");
      String strValue = getName(strName);
      

  2.   

    http://www.csdn.net/expert/topic/507/507466.xml?temp=.5998041
      

  3.   

    用传址的方式
    如:
       String strName = new String("abc");
       getName(strName);   // 函数中将strName赋值为"def"
       System.out.println(strName);
    结果是
       打印出"def"
    该如何做呢
      

  4.   

    class StrWrapper{
        public String strName;
    }
    class TestStr{ void getName(StrWrapper s){
        s.strName=new String("def");
    }
    public static void main(String []ars){
    TestStr ts=new TestStr();
    StrWrapper wrap=new StrWrapper();

    ts.getName(wrap);
    System.out.println(wrap.strName);
    }

    }
      

  5.   

    其实java的参数都是指针;
    如果你的运用不那么复杂的话,在你写得此函数的文件中定义成员变量,
    将你的java函数如editName(String name)(我认为你的函数命名不合适吧!)
    一个简单的例子,是不是和你的想法一致?class A
    {
        private String aName = new String("");
        
        public A(String name)
        {
             this.aName = name;
        }
        public void setName(String newname)
        {
             this.aName = newname;
        }
        public String getName()
        {
             return this.aName;
        }
        public void editName(String name)
        {
             name = + "haha";
        }
    }main()
    {
        String name = "name";
        A a = new A(name) ;
        a.edit(name);
        System.out.printLn("\n"+name);        //namehaha
    }
      

  6.   

    在C++中:
    //--------------------------------
    void change(int *pp)
    {
      *pp=20;//now a==20
      int b=5;
      pp=&b;//now a==20 
    }
    int a=10;
    int *p=&a;
    //---invoke function---
    chage(p);在这里我们注意了,
    1#我们通过指针可以改变指针的指向。我们使得函数中的pp指向b
    2#同时也可以改变指针指向的内容。我们改变了pp指向的内容a==20,而a 原来是
    a==10但是我们不能改变指针本身,就是说我们传递p给函数的,但是我们并没有改变p的指向,也就是函数后,p还是指向a的。要想改变我们只有通过指针的指针或者是指针的引用来实现的。//--------------------
    在JAVA中
    //--------------------
    函数不管是传递值还是传递址,实际上我们都不能直接做到上面2#这个也就是说明了java中对于传递址只是简单的传递引用而已,他的作用已经被打了折扣的。在函数调用中,我们只能使用object.method的样式来对对象进行改动的。如果我们采用object=new classtype()的话,只是改变引用指向新的对象而不是使得引用原来指向的对象被替换的。这个在java 中很重要的。
      

  7.   

    --------------------------------------------------------------
    lancelot_yao(电子骑士) 用传址的方式
    如:
       String strName = new String("abc");
       getName(strName);   // 函数中将strName赋值为"def"
       System.out.println(strName);
    结果是
       打印出"def"
    该如何做呢
    --------------------------------------------------------------遗憾的告诉你,这个 strName 是不会变的。
    无论你在函数中 getName() 如何对待 strName,
    在函数外的部分中,strName 是不变的。
      

  8.   

    ===============================================================
    lancelot_yao(电子骑士)  
      用传址的方式
    如:
       String strName = new String("abc");
       getName(strName);   // 函数中将strName赋值为"def"
       System.out.println(strName);
    结果是
       打印出"def"
    该如何做呢
      
    ===============================================================遗憾的告诉你,这是不可能的,无论你在getName 中对strName 如何操作,
    strName在主程序中始终是不变的。 
     
      

  9.   

    你的想法,用你上面写的是不可能实现的,String 是一个只读类,不可能被改变的,除非你自己编个类似String的类来代替这里的String 类
      

  10.   

    java的变量除了基本类型全都是指针。String是指针,但它是constant的指针,不能改的,只能重新附值,如s='ddd',这时,指针的地址就变掉了。java的函数参数只能传拷贝,不能传引用,就是说传的是指针的一份拷贝,份拷贝的地址指向了别的地方,当然不能传回来了。解决这个问题只有一个办法,不用String做参数,最好的替代类是StringBuffer。StringBuffer和String之间的转换非常容易。
      

  11.   

    分太少了:(
    不要说不行,我已经验证过了。
    public static void getName(byte[] pByte)
    {
        int iNormalLen = pByte.length;
        pByte[0] = 'o';
        pByte[1] = 'o';
        pByte[2] = 'o';}
      public static void main(String[] args)
      {
        Frame2 frame2 = new Frame2();
        String s = "abe";
        byte[] b = s.getBytes();
        frame2.getName(b);
        String s2 = new String(b);
        System.out.println(s2);
      }
      

  12.   

    完全同意楼上两位,String 不可改。如果对其修改就要对其进行包装,不过最简单的方式是使用“数组对象”,这同样适用于基本类型
    如:
    class Test {
      public static void main(String args[]) {
    String[] old = {"Old String"};
    new Test().fun(old);
    System.out.println(old[0]);
      }  void fun(String[] name){
       name[0]="New String";
      }
    }
      

  13.   

    要解决这个问题的关键,就是要弄清楚几个基础的机制:
    1:String 类是不可改变的,你不能改变其中的内容。
       任何对其进行的操作其结果都将是生成一个新的String对象。
    2:Java中都是值传递。
    所以,来看你的这个问题就很简单了。只要定义一个String ,
    然后在方法中将这个新定义的String 类的索引指向新的字符串即可!
      

  14.   

    所以Java 并不允许使用传址,只有想办法不用传址。