共计 1595 个字符,预计需要花费 4 分钟才能阅读完成。
要高效拼接字符串,应该使用StringBuilder
。
很多时候,我们拼接的字符串像这样:
// 输出: Hello Bob, Alice, Grace! | |
public class Main {public static void main(String[] args) {String[] names = {"Bob", "Alice", "Grace"}; | |
var sb = new StringBuilder(); | |
sb.append("Hello"); | |
for (String name : names) {sb.append(name).append(","); | |
} | |
// 注意去掉最后的 ",": | |
sb.delete(sb.length() - 2, sb.length()); | |
sb.append("!"); | |
System.out.println(sb.toString()); | |
} | |
} |
类似用分隔符拼接数组的需求很常见,所以 Java 标准库还提供了一个 StringJoiner
来干这个事:
import java.util.StringJoiner; | |
public class Main {public static void main(String[] args) {String[] names = {"Bob", "Alice", "Grace"}; | |
var sj = new StringJoiner(","); | |
for (String name : names) {sj.add(name); | |
} | |
System.out.println(sj.toString()); | |
} | |
} |
慢着!用 StringJoiner
的结果少了前面的 "Hello"
和结尾的 "!"
!遇到这种情况,需要给StringJoiner
指定“开头”和“结尾”:
import java.util.StringJoiner; | |
public class Main {public static void main(String[] args) {String[] names = {"Bob", "Alice", "Grace"}; | |
var sj = new StringJoiner(",", "Hello", "!"); | |
for (String name : names) {sj.add(name); | |
} | |
System.out.println(sj.toString()); | |
} | |
} |
String.join()
String
还提供了一个静态方法 join()
,这个方法在内部使用了StringJoiner
来拼接字符串,在不需要指定“开头”和“结尾”的时候,用 String.join()
更方便:
String[] names = {"Bob", "Alice", "Grace"}; | |
var s = String.join(",", names); |
练习
请使用 StringJoiner
构造一个 SELECT
语句:
import java.util.StringJoiner; | |
public class Main {public static void main(String[] args) {String[] fields = {"name", "position", "salary" }; | |
String table = "employee"; | |
String select = buildSelectSql(table, fields); | |
System.out.println(select); | |
System.out.println("SELECT name, position, salary FROM employee".equals(select) ? "测试成功" : "测试失败"); | |
} | |
static String buildSelectSql(String table, String[] fields) {// TODO: | |
return ""; | |
} | |
} |
下载练习
小结
用指定分隔符拼接字符串数组时,使用 StringJoiner
或者 String.join()
更方便;
用 StringJoiner
拼接字符串时,还可以额外附加一个“开头”和“结尾”。
正文完
星哥玩云-微信公众号
