字符串concat在java中不起作用

时间:2012-07-04 15:41:57

标签: java string concat

我有以下代码:

private String foo;

public void setFoo(String bar)
{
  foo = bar + "bin/";
}

我希望此代码使用重载的"bin/"运算符连接bar和'+'。当我在调试器中执行相同的代码示例时,它可以正常工作。出于某种原因,虽然foo总是等于bar而且永远不会有"bin/"

实际代码:

 private String execpath_;

  public void setMambaPath(String executable)
  {

    if (!(executable.endsWith("/")))
      executable = executable.concat("/");

    execpath_ = executable + "bin/";
  }

其他地方execpath_ =只有在没有bin /:

的情况下可以删除
StringBuilder cmd = getSshCommand_();
cmd.append(execpath_ + "mambaService");

我不在其他地方使用execpath_

3 个答案:

答案 0 :(得分:2)

String是不可变变量,不包含更改String对象本身内容的方法。所以你需要使用concat()方法。

或者第二种方法,您可以使用StringBuilder

private String foo;

public void setFoo(String bar)
{
  StringBuilder builder = new StringBuilder();
  builder.append(bar + "bin/");
  foo = builder.toString();
}

答案 1 :(得分:0)

发布更多代码(包括您稍后使用foo的位置)。 foo正在其他地方进行修改,或者setFoo有一个正在修改的本地foo而不是this.foo。我很确定这是第一个。

答案 2 :(得分:0)

什么有效:

  public void setMambaPath(String executable)
  {

    if (!(executable.endsWith("/")))
      executable = executable.concat("/");

    executable = executable.concat("bin/");

    execpath_ = executable;
  }