Java 何时对String.subString使用String.subSequence方法?

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的对

我知道subSequence返回一个只读的charSequence。此外,String类实现了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();
...