请考虑以下代码:
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() + "]");
}
}
“\ b”在分割功能中做了什么?删除它会产生以下结果(这意味着只使用split(“”)):
[noitseuQ weivretni na si sihT]
另外,` - >'是什么运算符在for循环中做什么?我不太明白。请帮助我理解我的问题。
由于
答案 0 :(得分:6)
String.split()
根据正则表达式拆分String。
\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中创建太多不必要的字符串字符串池)。