java - 如何保持字符串缓冲区恒定

标签 java stringbuffer

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

代码:

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;
}

最佳答案

您必须创建原始 StringBuffer 的副本并将其传递给函数。否则,您将传递对同一个 StringBuffer 对象的引用,以便函数内部所做的更改针对本地 StringBuffer 对象进行。

关于java - 如何保持字符串缓冲区恒定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39107231/

相关文章:

java - StringBuffer 的替换方法无法正常工作

java - JPA 引用 : are there any guarantees related to field contents?

java - 在 Java 中使用字符串缓冲区进行字符串追加

java - 如何在 Java ME 中将 StringBuffer 转换为 InputStream?

java - 面向对象的类接口(interface)

java - 多个 If else if 语句

java - 字符串缓冲区到字符串转换异常?

enums - Java——如何设计自己的类型?

java - Android 低功耗蓝牙

Java 树集排序算法