【发布时间】:2014-09-09 02:47:53
【问题描述】:
我知道 subSequence 返回一个只读的 charSequence。此外,String 类实现了 CharSequence。 subString 返回一个字符串。
但是,在子序列和子字符串中,何时以及更喜欢哪一个
【问题讨论】:
标签: java string substring charsequence subsequence
我知道 subSequence 返回一个只读的 charSequence。此外,String 类实现了 CharSequence。 subString 返回一个字符串。
但是,在子序列和子字符串中,何时以及更喜欢哪一个
【问题讨论】:
标签: java string substring charsequence subsequence
来自API javadoc:
调用该方法的形式
str.subSequence(begin, end)行为方式与调用完全相同
str.substring(begin, end)
还有:
定义这个方法是为了让String类可以实现CharSequence接口。
所以,当您使用CharSequence 类型的对象而不是String 时,使用subSequence 是合适的
【讨论】:
您始终可以使用substring。 javadoc 表示两者具有相同的行为。虽然subSequence 返回CharSequence 和substring 返回String,但String 实现CharSequence,因此您始终可以在需要CharSequence 的上下文中使用substring。
根据 javadoc,subSequence 之所以存在是因为它必须存在,以便实现CharSequence 中定义的方法。因为它的存在是因为它是必需的,而不是特别是因为有使用它的理由,所以如果你有 String,我看不出有任何使用它的理由。
【讨论】:
这是来自java.util.regex.Pattern.split 的 sn-p,如果将 String 作为输入 arg 传递,则将使用 String.subSequence:
public String[] split(CharSequence input, int limit) {
...
String match = input.subSequence(index, m.start()).toString();
...
【讨论】: