Java 如何保持stringbuffer常量

Java 如何保持stringbuffer常量,java,stringbuffer,Java,Stringbuffer,在我的java程序中,我有一个本地stringbuffer变量,我正在将该变量传递给另一个函数。现在,另一个函数中的任何更改都在修改原始变量。如何避免这种情况?请帮助 守则: main() { ... StringBuffer in=.... //n is the length of in for(int j=1;j<=n/2;j++) if(flipandcheck(in,j)) { output=j

在我的java程序中,我有一个本地stringbuffer变量,我正在将该变量传递给另一个函数。现在,另一个函数中的任何更改都在修改原始变量。如何避免这种情况?请帮助

守则:

main()
{
    ...
    StringBuffer in=....
    //n is the length of in
    for(int j=1;j<=n/2;j++)
        if(flipandcheck(in,j))
        {
            output=j+1;
            break;
        }
    ...
}
public static boolean flipandcheck(StringBuffer str,int index)
{
    int l=1;
    if(str.charAt(index)=='(')
        str.setCharAt(index,')');
    else 
        str.setCharAt(index,'(');
    for(int i=1;i<str.length();i++)
    {
        if(str.charAt(i)=='(')l++;
        else --l;
        if(l<0)return false;
    }
    if(l==0)return true;
    else return false;
}
main()
{
...
StringBuffer in=。。。。
//n是in的长度

对于(int j=1;j您必须创建原始StringBuffer的副本并将其传递给函数。否则,您将传递对同一StringBuffer对象的引用,以便对本地StringBuffer对象进行函数内部的更改。

创建缓冲区的副本并传递它

for(int j=1;j<=n/2;j++) {
    if(flipandcheck(new StringBuffer(in),j)) {
            output=j+1;
            break;
    }
}

for(int j=1;jPass一份副本?