使用 StringBuffer 和 StringBuilder 作为方法 return 输入 Java
Using StringBuffer and StringBuilder as a method return type in Java
在 Java 中使用 StringBuilder 或 StringBuffer 作为方法的 return 类型是个坏主意吗?我经常从 Java 方法中 return 将 String 作为 return 类型编辑,但从来没有使用 StringBuilder 或 StringBuffer ,即使我在方法中使用它们进行了操作。
如果建议不要使用 StringBuilder 和 StringBuffer 作为方法 return 类型,谁能教我吗?若否,原因为何?原因之一可能是这两个是可变的。但是它有什么不同,因为我们经常使用其他派生类型作为可变的方法 return 类型。
有人可以用代码解释使用 StringBuffer 和 Builder 作为方法 return 类型的缺点(如果有的话)吗?
StringBuffer
是旧的,被 StringBuilder
代替了速度。
返回 StringBuilder 可能是一种糟糕的风格:有时最好将 StringBuilder 作为 参数 传递。比较:
[最佳]作为参数:
void dump(StringBuilder sb) {
sb.append(name);
for (Foo child : children) {
child.dump(sb);
}
}
[没问题,效率低下] 与聚合的不可变值比较:
String toString() {
return name + left.toString() + right.toString();
}
[丑陋] 与返回可变值的比较:
StringBuilder dump() {
StringBulder sb = new StringBuilder();
for (Foo child : children) {
sb.append(child.dump()); // Inefficient
}
return sb;
}
构建器模式的思想是将构造与表示分开。
如果您使用return值继续构建对象的过程,那绝对没问题。另一方面,如果 return 值不被修改并且已经被用作表示是不好的。
这些 类 没有什么特别的,它们只是代表一个可变的字符序列。您需要做的一件事是在构造和表示之间划清界限。
在 Java 中使用 StringBuilder 或 StringBuffer 作为方法的 return 类型是个坏主意吗?我经常从 Java 方法中 return 将 String 作为 return 类型编辑,但从来没有使用 StringBuilder 或 StringBuffer ,即使我在方法中使用它们进行了操作。
如果建议不要使用 StringBuilder 和 StringBuffer 作为方法 return 类型,谁能教我吗?若否,原因为何?原因之一可能是这两个是可变的。但是它有什么不同,因为我们经常使用其他派生类型作为可变的方法 return 类型。
有人可以用代码解释使用 StringBuffer 和 Builder 作为方法 return 类型的缺点(如果有的话)吗?
StringBuffer
是旧的,被 StringBuilder
代替了速度。
返回 StringBuilder 可能是一种糟糕的风格:有时最好将 StringBuilder 作为 参数 传递。比较:
[最佳]作为参数:
void dump(StringBuilder sb) {
sb.append(name);
for (Foo child : children) {
child.dump(sb);
}
}
[没问题,效率低下] 与聚合的不可变值比较:
String toString() {
return name + left.toString() + right.toString();
}
[丑陋] 与返回可变值的比较:
StringBuilder dump() {
StringBulder sb = new StringBuilder();
for (Foo child : children) {
sb.append(child.dump()); // Inefficient
}
return sb;
}
构建器模式的思想是将构造与表示分开。
如果您使用return值继续构建对象的过程,那绝对没问题。另一方面,如果 return 值不被修改并且已经被用作表示是不好的。
这些 类 没有什么特别的,它们只是代表一个可变的字符序列。您需要做的一件事是在构造和表示之间划清界限。