Java StringBuilder append()返回?

kev*_*ang 2 java oop string

我只是Java编程的新手,这真让我感到困惑,StringBuilder中方法append()的返回类型是什么?

我已经在https://docs.oracle.com/javase/9​​/docs/api/index.html?java/lang/String.html上检查过API文档,并且返回的是“ StringBuilder”,所以我应该写像这样的代码:

StringBuilder a=new StringBuilder("hello");
...(another StringBuilder object)=a.append("world");
Run Code Online (Sandbox Code Playgroud)

并且a仍将是“ hello”,而另一个stringbuilder将变为“ helloworld”,因为它具有返回值?

但是实际上一个本身也变成了“ helloworld”。为什么?我误会了什么吗?

Sur*_*tta 5

StringBuilder遵循Builder模式是合理的,因为它用于构建String。

在构建器模式中,每个方法(大多数)都会返回当前实例,因此返回的是修改后的实例。

但是实际上一个本身也变成了“ helloworld”。为什么??

因为您使用同一实例再次追加。,所以它已经存储了先前的值并被赋予了更新后的实例。

所以我应该这样写代码:

StringBuilder a = new StringBuilder(“ hello”); ...(另一个StringBuilder对象)= a.append(“ world”);

您不需要。从那以后,您就可以链接方法调用了。那就是建造者模式的美。

StringBuilder a=new StringBuilder("hello");
a.append("World").append(" Mr.").append("Blah");
Run Code Online (Sandbox Code Playgroud)