Java 何时对String.subString使用String.subSequence方法?
我知道subSequence返回一个只读的charSequence。此外,String类实现了CharSequence。子字符串返回一个字符串 但是,在子序列和子串中,何时以及从以下列表中选择哪一个: 此表单方法的调用Java 何时对String.subString使用String.subSequence方法?,java,string,substring,charsequence,subsequence,Java,String,Substring,Charsequence,Subsequence,我知道subSequence返回一个只读的charSequence。此外,String类实现了CharSequence。子字符串返回一个字符串 但是,在子序列和子串中,何时以及从以下列表中选择哪一个: 此表单方法的调用 str.subSequence(begin, end) 行为方式与调用完全相同 str.substring(begin, end) 而且: 定义此方法是为了让String类可以实现CharSequence接口 因此,在处理类型为CharSequence的对
str.subSequence(begin, end)
行为方式与调用完全相同
str.substring(begin, end)
而且:
定义此方法是为了让String类可以实现CharSequence接口
因此,在处理类型为
CharSequence
的对象时,使用subSequence
是合适的,而不是String
您可以始终使用substring
。他们说这两个人有着相同的行为。虽然subSequence
返回CharSequence
并且substring
返回String
,String
实现了CharSequence
,因此您可以在需要CharSequence
的上下文中始终使用substring
根据javadoc,
subSequence
之所以存在,是因为它必须存在,以便实现CharSequence
中定义的方法。因为它的存在是因为它是必需的,而不是特别因为它有使用它的理由,所以如果您有一个字符串
我看不出有任何理由使用它,这里有一个来自java.util.regex.Pattern.split
的片段,其中String.subSequence
将在字符串作为输入参数传递时使用:
public String[] split(CharSequence input, int limit) {
...
String match = input.subSequence(index, m.start()).toString();
...