例如:
public void test1(String arg1){
  //如何才能修改arg1这个引用所指向的值呢?想了半天不得解啊
}

解决方案 »

  1.   

    什么意思?能具体点吗?
    你是说      test1(p);public void test1(String p1) {
        p1 = ...
    }
    然后你想修改什么呢?
      

  2.   


    刚刚还有人问这个问题来着。。http://topic.csdn.net/u/20100317/11/dec632aa-5e60-41aa-8942-4878630131ca.html
    你看我在四楼的回复就明白了
      

  3.   

    http://topic.csdn.net/u/20100317/11/dec632aa-5e60-41aa-8942-4878630131ca.html
      

  4.   

    这个不同于c,c里面传值修改是没有用的,但java里面因为是一份资源的两个引用,所以任何一个修改都可以改掉这同一份资源。但是引用本身互相之间不能产生作用,因为它们甚至都不知道对方的存在。
      

  5.   

    public static void main(String[] args){
    String arg = "0";//arg最开始指向的是 "0"这个内存地址。
    new Test().test1(arg);//调用方法时把arg这个引用复制了一份传递给了方法
    System.out.println(arg);//实际上还是打印的0
    }
    public void test1(String arg){
    arg = "1";在方法中arg = "1" 把这个复制的引用重新指向了 "1"这个内存地址
    }
    我的问题是:能不能有什么办法在方法中改变 arg所指向的 值?
      

  6.   


    如果把String类型,换成其他的对象类型是可以的
    比如 arg对象可以通过访问自己的方法,来改变自己对象中的字段
      

  7.   


    那是不可能的,因为对于方法内部来说,它根本不需要知道有那样一个引用arg存在,它只知道传进来的这个引用。如果一定要改,那么只有把arg作为类变量,那么你在哪里改都可以
      

  8.   

    public void test1(Demo arg){
    arg.setValue(99);// 这样就改变arg这个对象中的值了
    }class Demo {
    int i = 0;
    public void setValue(int value){
    this.i = value;
    }排版比较乱, 直接在论坛上敲的, 不知道是否是lz想要的效果
      

  9.   

    哎 关键还就是String类型
    不是基本类型也不是自定义类型悲愤
      

  10.   


    糊涂了, 改变引用本身  不大明白这个意思
    如果是改变 arg的引用的话
    直接  arg = new Demo(); 就好了啊
      

  11.   

    呵呵   String对象貌似是不能更改的啊    
    记得有个字符串池的概念啊   敢问这样做的深层次原因么
      

  12.   

    要改的话,用StringBuffer咯,不然人家为什么要提供这个StringBuffer