当然不对,这和fortran不一样的,要实现你的功能的代码如下:String s1="aaa"
sl=change(s1)public String change(String sss)
{
ssssssChange="changed";//这里不能用sss,不能将其改变!
return sssChange;//注意返回值类型
}

解决方案 »

  1.   

    可是如果参数类型是hashtable,传入和传出就可以改变,
    “引用参数不都是可以变的吗
      

  2.   

    java中方法参数不都是引用,减单变量不是如int
    类String不是减单变量,但比较不一样,有"值考贝"一说.
      

  3.   

    java中参数是按照值传递的直接两传递的是实际的值,实例和数组传递的是内存地址。你的程序实际等同于
    String s1="aaa"
    change(s1)
    public boolean change(String sss)
    {
    sss=s1
    sss="changed";
    return true;
    }
      

  4.   

    s1和sss都是句柄,在把s1作为实参传给change时,只是令s1和sss都指向同一个对象,而sss="changed";只是改变了sss句柄指向的对象,s1并未发生任何变化。这里的s1、sss和c++里的引用并不一样,c++中的引用被初始化指向一个对象后就不能再指向其他对象,而java中的句柄却可以。讲多了,你只要记住,虽然s1和sss可能指向同一个对象,但如果其中一个指向了其他对象(重新赋值),它们就没了任何联系。
      

  5.   

    你可以这样改变实参指向对象的值(成立的理由就是y和x指向同一个值)
    class Letter {
      char c;
    }public class PassObject {
      static void f(Letter y) {
        y.c = 'z';
      }
      public static void main(String[] args) {
        Letter x = new Letter();
        x.c = 'a';
        System.out.println("1: x.c: " + x.c);
        f(x);//注意这里,已经改变了x指向的对象的值
        System.out.println("2: x.c: " + x.c);
      }
    } ///:~
    上边是《think in java》中的例子
      

  6.   

    下面这个例子可以:class af
    {
    static String[] f=new String[1];
    public static void main(String[] args) 
    {
    f[0]="adff";
    change(f);
    System.out.println(f[0]); }
    static void change(String[] s)
    {
    s[0]="Changed";
    }
    }
      

  7.   

    那想得到一个返回值好麻烦啊,有什么简单的方法,不能return,因为要返回几个值