下午好
许多人都知道,
Java
使用这样的设计是不可取的。
"Hello" + "Name" + "Surname" + etc.;
//или же
String text = "Hello";
text += "Name";
text += "Surname";
text += etc...;
在这些情况下值得使用StringBuilder
,虽然我对此有疑问,但我想知道我是否正确使用它?
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Name: " + this.getName());
builder.append("\nSurname: " + this.getSurname());
builder.append("\nAge: " + this.getAge());
builder.append(this.isSex() ? "\nWoman " : "\nMan ");
builder.append("\nCourse: " + this.course);
builder.append("\nFaculty: " + this.faculty);
builder.append("\nGroup: " + this.group);
String result = new String(builder);
return result;
}
查看代码,我认为我使用不正确......如果是这样,请告诉我它应该如何,以及在这种情况下使用什么是可取的?
将 append 中的串联操作替换为对 append 自身的调用链的延续,以最大限度地减少 String 类型的新字符串的创建:
等等 总的来说-一切都很好。是的,这种情况下的优化问题值得怀疑,尽管不排除...
第二个块(直接用你的代码)已经被拆除。
事实上,
+
如果这些是普通字段,而不是使用某些方法调用,则可以通过 连接字符串side-effect'ами
。编译器足够聪明,可以用java.lang.StringBuilder
.您可以通过考虑以下示例来验证这一点:
让我们看看生成了什么字节码。你不能深入细节,这里最重要的是对它的解释。
正如我们所见,这两种方法都使用
java.lang.StringBuilder
.关于您的代码,除了过于冗长之外,它是非常正确的。
StringBuilder
允许您使用更简洁地编写fluent style
是的,该方法
StringBuilder.append()
将返回instance
StringBuilder
,也就是说,您可以按照 'ep1demic' 的指示进行操作最好不要使用
this.getSurname()
,而只是写而
sb.getString();
不是new String(sb);