Java中split()按正则分割、需转义特殊字符,String.join()静态拼接、不支持null;二者非严格互逆,因正则语义、空串处理及limit参数差异。

Java 里没有 join 方法,split 是 String 类的实例方法,但拼接字符串得靠 String.join()(静态方法)或 StringJoiner,不是反向操作。
split 的基本用法和常见陷阱
split 接收一个正则表达式作为分隔符,不是普通字符串。比如想按点号 . 拆分 "a.b.c",直接写 "a.b.c".split("."); 会返回空数组——因为 . 在正则中匹配任意字符。
- 必须转义特殊字符:
"a.b.c".split("\\."); - 连续分隔符会被合并处理:
"a,,b".split(",")返回长度为 3 的数组["a", "", "b"];但"a,,b".split(",", -1)才保留末尾空串(默认 limit=0 会丢弃结尾空串) - limit 参数影响结果:正数 limit 表示最多切出 limit-1 次,最后一项是剩余全部;负数(如
-1)表示不限制且保留所有空项;零值(默认)等价于-1但会丢弃末尾空字符串
String.join 是唯一内置的 join 方法
String.join() 是静态方法,第一个参数是分隔符,第二个是 Iterable 或可变参数 CharSequence...。它不支持对原始数组直接调用(比如不能 arr.join("-")),也不能传入 null 元素——会抛 NullPointerException。
- 正确用法:
String.join("-", "a", "b", "c")→"a-b-c" - 配合数组:
String.join(",", Arrays.asList(strArray)),或 Java 8+ 直接String.join(",", strArray)(仅限String[]) - 如果数组含
null,需先映射处理:Arrays.stream(arr).map(Objects::toString).collect(Collectors.joining(","))
需要复杂逻辑时,用 StringJoiner 更可控
当要动态添加、带前缀/后缀、或避免中间多余的分隔符时,StringJoiner 比反复用 + 或 StringBuilder 更清晰。
本文档主要讲述的是Android数据格式解析对象JSON用法;JSON可以将Java对象转成json格式的字符串,可以将json字符串转换成Java。比XML更轻量级,Json使用起来比较轻便和简单。JSON数据格式,在Android中被广泛运用于客户端和服务器通信,在网络数据传输与解析时非常方便。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
立即学习“Java免费学习笔记(深入)”;
StringJoiner sj = new StringJoiner(",", "[", "]");
sj.add("a");
sj.add("b");
sj.add("c");
// 结果:"[a,b,c]"
-
StringJoiner不会因空值崩溃,但add(null)会加入字符串"null" - 它不自动跳过 null,也不做 trim,这些都得手动过滤
- 适合循环构建场景,比
String.join()灵活,但没后者简洁
别指望 split 和某个方法能完全互逆——正则语义、空串处理、limit 行为、null 安全性,每一步都有隐含规则。实际写的时候,先明确输入是否含特殊字符、是否有连续/首尾分隔符、要不要保留空段,再选对应参数或换工具。









