1.我对这两者感到困惑,如果有,那么它们有不同的功能吗?
StringBuffer(CharSequence chars)
和
StringBuffer(String str)
2. String 和 CharSequence(特殊功能)之间的基本区别是什么?
最佳答案
CharSequence
是一个接口(interface);碰巧 String
实现了它。
这意味着,例如,当您在 .charAt()
上调用 String
时,真正调用的是 String
的这个 CharSequence
方法的实现。
从 CharSequence
的 javadoc 可以看出,JDK 中真正实现这个接口(interface)的类并不多。
至于为什么有两个构造函数,StringBuffer
可以追溯到Java 1.0,CharSequence
只出现在1.4中;然而,这也是 StringBuilder
(你应该使用,实际上,而不是 StringBuffer
)有两个构造函数(一个以 CharSequence
作为参数,另一个以 String
作为参数)的情况,所以当 a String
作为参数传递。至于这种优化可能是什么,嗯,这是“使用源,卢克”(tm)的一个案例。
作为一个不在 JDK 中的 CharSequence
实现的例子,你可以看到我的一个项目: largetext 。请注意,除其他外,从 Matcher
uses a Pattern
and not a CharSequence
as an argument 生成 String
;并且由于 String
实现了 CharSequence
,所以将 String
作为参数传递是有效的。
关于java - StringBuffer(String str) 和 StringBuffer(CharSequence chars) 的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27175875/