Java 试着理解以下颠倒句子的代码 请考虑下面的代码: public class SentenceReversal { /** * @param args */ public static void main(String[] args) { String[] parts = "This is an interview Question".split("\\b"); StringBuilder sb = new StringBuilder(); for (int i = parts.length; i --> 0 ;) { sb.append(parts[i]); } System.out.println("[" + sb.toString() + "]"); } }

Java 试着理解以下颠倒句子的代码 请考虑下面的代码: public class SentenceReversal { /** * @param args */ public static void main(String[] args) { String[] parts = "This is an interview Question".split("\\b"); StringBuilder sb = new StringBuilder(); for (int i = parts.length; i --> 0 ;) { sb.append(parts[i]); } System.out.println("[" + sb.toString() + "]"); } },java,collections,Java,Collections,“\b”在拆分函数中做什么?删除它将产生以下结果(即仅使用拆分(“”)): [noitseuQ weivretni na si sihT] 另外,“-->”操作符在for循环中做什么?我不太明白。请帮助我理解我的问题 谢谢String.split()基于正则表达式拆分字符串 \b是一个正则表达式,表示单词边界,即行首、行尾、空格、标点符号等。它作为\\b传递,因为Java需要用另一个\转义\ 当您使用“拆分()时,您基本上没有拆分任何内容,因此输入字符串会被拆分为数组中的单个字母,然后数组会反向

“\b”在拆分函数中做什么?删除它将产生以下结果(即仅使用拆分(“”)):

[noitseuQ weivretni na si sihT]

另外,“-->”操作符在for循环中做什么?我不太明白。请帮助我理解我的问题

谢谢

String.split()
基于正则表达式拆分字符串

\b
是一个正则表达式,表示单词边界,即行首、行尾、空格、标点符号等。它作为
\\b
传递,因为Java需要用另一个
\
转义
\

当您使用
拆分()时,您基本上没有拆分任何内容,因此输入字符串会被拆分为数组中的单个字母,然后数组会反向迭代,因此您会得到一个所有字母(而不是单词)都反向的字符串

只是想详细说明一下@LuiggiMendoza的观察结果

i --> 0 // gets interpreted as
i-- > 0 // i.e. it uses a post-fix decrement operator
这意味着
i
的值首先被压缩到
0
,然后发生
i=i-1


另外,请注意使用
StringBuilder
而不是
StringBuffer
(线程安全但速度慢)或普通的
String
串联(会在Java字符串池中创建太多不必要的字符串)。

i-->0
=>
i-->0
。表示
i-->0的“字边界”部分实际上是
i-->0
,这是一元运算符
--
的用法。这与
i>0
后面跟着
i=i-1
i-->0
一样,它是如此具有欺骗性,但不知何故并不在这种情况下
i
接近零
\b
is,这意味着它将在每个单词上拆分。它类似于使用
split(“”
),但还有一个额外的好处,就是包含空格。别忘了将我的评论添加到您的答案中。