假如我定义一个方法,处理一个很大的字符串,并没有必要保留这个字符串的副本。
如果有类似C中的引用调用参数的话,就很方便,在Java中除了定义一组静态成员外,不知道还有没有其它类似的方法?
虽然我不是很了解Java的内部机制,但是如果用
public String Str(String str)
{
    return str;
}
这种形式的话,Java要重新开辟和分配内存,这样肯定比引用调用的方法慢得多,不知道有没有其它可以替代的方法?

解决方案 »

  1.   

    Java中使用new开辟的就是引用的啊
      

  2.   

    java中都是传值只不过对于对象是传引用的值,对于基本数据类型是传真正的值
    楼主所说的下面这段代码
    public String Str(String str)
    {
        return str;
    }若String s="abc";如Str(s);调用时,Java并不会重新开辟和分配内存的,只是把"abc"这个字符串对象的引用传给str,所以此时str和s引用的是同一个字符串对象。
      

  3.   

    是这样的,java中不分值还是引用调用,但是对象本身就是指针,如果你把对象作为参数,就可以变相实现所谓引用调用,对于String本来应该符合这个模式,只不过java对String这个类不象一般类那样处理,String 对象的值是不能改变的,所以用作引用参数也没有意义,但StringBuffer是可以改变的,可以满足你的要求
      

  4.   

    其实你是遇到了个很特殊的类型String,这个类型的引用指向的内容是不可变的,你在方法里负值实际上是换了个新的引用而以。解决的方法是少用String类