String.subSequence()
具有以下的javadoc:
返回一个新的字符序列,它是此序列的子序列。
形式的这种方法的调用
str.subSequence(begin, end)
表现在完全相同的方式调用
str.substring(begin, end)
这种方法被限定为使得String类可以实现的CharSequence接口。
谁能解释?
String.subSequence()
具有以下的javadoc:
返回一个新的字符序列,它是此序列的子序列。
形式的这种方法的调用
str.subSequence(begin, end)
表现在完全相同的方式调用
str.substring(begin, end)
这种方法被限定为使得String类可以实现的CharSequence接口。
谁能解释?
使用str.subSequence(begin, end)
返回的CharSequence其被表示为字符序列中的串的只读形式。 例如:
String string = "Hello";
CharSequence subSequence = s.subSequence(0, 5);
它是只读的,你不能改变的意义chars
的范围内CharSequence
没有实例化的新实例CharSequence
。
如果你必须使用str.subSequence(begin, end)
,你可以把结果给一个String
:
String string = "Hello";
String subSequence = (String) s.subSequence(0, 5);
并使用一切正常String
运营商一样subSequence += " World";
子
子序列是子,后缀和前缀的推广。 发现这是两个或多个字符串的序列被称为最长公共子序列中最长的字符串。
例如:字符串“安娜”是字符串“香蕉”的子序列:
banana
|| ||
an na
子
一个字符串的子字符串是字符串的后缀的前缀,并等价的前缀后缀。 如果一个字符串是另一个的子串,它也是一个序列,这是一个比较笼统的概念。
例如:字符串“ANA”是在两个不同的偏移量香蕉的子串(和序列):
banana
|||||
ana||
|||
ana
阅读更多这里 。
但就如Java而言,没有作为明确指出在他们使用的任何区别的javadoc 。 也因为它在那里的陈述的,该方法subSequence
只被类实现的String
,以保持它符合了CharSequence
接口。 这种方法的名字确实只是一个用词不当。
要理解这一点,你需要知道的第一件事是什么子与子之间的区别
子是一个字符串的连续部分或子部分
而
亚序列是一个字符串或序列,这可能是连续的或不但元素的顺序的一部分被保持
例
让说str_a =“你好”
我们还有下面的字符串:
str_b = “你好”,str_c = “ELLO TH”,str_d = “hllo”,str_e = “豪HRE”,str_f = “那里你好”
str_b是str_a的子串,str_c也是str_a的一个子但str_d不是str_a的子串,因为这串是不连续的 。
现在,所有subtrings是子序列的顺序保持不变。
str_d是str_a的亚序列,str_e也是str_a的亚序列然而str_f不是str_a的亚序列作为这种情况下的顺序不会被维持。
现在对于Java,有关于javadoc的这些方法没有适当的澄清。
如果你看一下字符串的来源,你会看到,子实际调用子。 它比子唯一不同的是它施放字符串到的CharSequence。
总之,它没有多大意义的String
对象。 他们是等价的,除非你需要通过结果来一些东西,只需要String
,在这种情况下,你必须使用subtring(int,int)
版本或铸subsequence(int,int)
版本的String
(因为这是它是,在内部)。
String.substring(int,int)
存在首先是因为String
存在第一。 在Java 1.4, CharSequence
加入,有人显然意识到,这将是有有相同的功能非常有用,但返回CharSequence
而不是String
(灵活性)。 所以,来了CharSequence.subSequence(int,int)
然而,由于String
实现CharSequence
, String
继承看似冗余方法。
在理解简单来说:
子 :一个子字符串是字符的字符串,其中,奥德事项内的连续序列。
Substring
string
ring
亚 :从一个字符串,任何字符,但在序列。
Substring
u s i
s b t i n g
r g
基本上,它是返回什么。 一个字符串,另一个是CharSequence的(你可以强制转换为字符串)。
当你需要变量的类型的CharSequence你会使用的序列。