我只是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”。为什么?我误会了什么吗?
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)