String.subSequence()具有以下javadoc:
返回一个新的字符序列,该字符序列是此序列的子序列。对此表单方法的调用 Str.subSequence(开始,结束) 行为与调用str.substring完全相同(开始,结束) 定义此方法是为了使String类能够实现CharSequence接口。
有人能解释吗?
发布于 2013-03-19 17:13:30
使用str.subSequence(begin, end)返回一个CharSequence,它是字符串的一种只读形式,表示为一个字符序列。例如:
String string = "Hello";
CharSequence subSequence = string.subSequence(0, 5);它是只读的,也就是说,如果不实例化一个新的chars实例,就不能在CharSequence中更改CharSequence。
如果必须使用str.subSequence(begin, end),则可以将结果转换为String
String string = "Hello";
String subSequence = (String) string.subSequence(0, 5);并使用所有普通的String操作符,如subSequence += " World";。
发布于 2018-04-06 08:01:36
要理解这一点,您首先需要知道的是,子字符串和子序列之间的区别是什么?
子字符串是字符串的连续部分或子部分。
鉴于
子序列是字符串或序列的一部分,可能是连续的,也可能不是连续的,但元素的顺序是维持的。
例如,假设我们有以下字符串:
str_a="hello there"
str_b="hello"
str_c="ello th"
str_d="hllo"
str_e="ho hre"
str_f="there hello"str_b是str_a的子字符串,str_c也是str_a的子字符串,但是str_d不是str_a的子字符串,因为这个子字符串不是连续的。
现在,随着顺序的保持,所有子字符串都是子序列。
str_d是str_a的子序列,str_e也是str_a的子序列,但是str_f不是str_a的子序列,因为在这种情况下,顺序不被维护。
现在,对于java,对于javadoc中的这些方法没有适当的说明。
发布于 2013-03-19 16:48:12
子序列
子序列是子字符串、后缀和前缀的概括。寻找两个或多个字符串的子序列最长的字符串称为最长的公共子序列问题。
例如:字符串"anna“是字符串”香蕉“的子序列:
banana
|| ||
an na子字符串
字符串的子字符串是字符串后缀的前缀,相当于前缀的后缀。如果一个字符串是另一个字符串的子字符串,那么它也是一个子字符串,这是一个更普遍的概念。
例如:字符串"ana“是香蕉的子字符串(和子序列),有两个不同的偏移:
banana
|||||
ana||
|||
ana阅读更多的这里。
但就Java而言,正如javadoc中明确指出的那样,它们的使用没有任何区别。另外,正如这里所述,方法subSequence仅在类String中实现,以使其与CharSequence接口保持兼容。这个方法的名字确实是个用词不当的方法。
https://stackoverflow.com/questions/15505508
复制相似问题