- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我浏览了 String
和 StringBuffer
API,当您调用 substring
方法时,两者的内部工作原理似乎相同。两者都有对原始 char 数组 (char[] original
) 的引用,因此两者都使用相同的空间。那为什么首选StringBuffer
呢?stringbuffer.substring(2,4) 与 string.substring(2,4) 有何不同。
StringBuffer的Substring方法:
public String substring(int start, int end) {
return new String(value, start, end - start);
}
字符串的子串方法:
public String substring(int beginIndex, int endIndex) {
return ((beginIndex == 0) && (endIndex == value.length)) ? this
: new String(value, beginIndex, subLen);
}
两个子字符串变体都调用 String 构造函数:
public String(char value[], int offset, int count) {
this.value = Arrays.copyOfRange(value, offset, offset+count);
}
它调用Arrays类的以下方法:
public static char[] copyOfRange(char[] original, int from, int to) {
// **char[] original**
return copy;
}
最佳答案
在单个点上判断 String
的值与 StringBuffer
的值是错误的。是的,它们在获取子字符串时的功能非常相似。不,这不会引发关于是否使用其中之一的争论。
您应该始终使用最好的结构。 String
是不可变的,应该在需要不可变性时以及在某些边缘情况下使用。如果您需要对 CharSequence
进行更改,那么使用 StringBuilder
会更好/更安全/更快/内存效率更高。
考虑删除字符串的一部分。比较如何使用 String
和使用 StringBuilder
来完成此操作 - 看看它有多容易。它不仅更容易,而且更高效。 String
机制创建两个新对象,然后将它们添加在一起以形成第三个对象。 StringBuilder
只是删除字符串的一部分。
public void test() {
String a = "0123456789";
StringBuilder b = new StringBuilder(a);
System.out.println("a=" + a + " b=" + b);
a = a.substring(0, 2) + a.substring(5);
b.delete(2, 5);
System.out.println("a=" + a + " b=" + b);
}
关于java - String的子串函数与StringBuffer的子串函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28298634/
我正在尝试创建一个程序,其中字符串的前三个字符重复给定次数,如下所示: foo('Chocolate', 3) # => 'ChoChoCho' foo('Abc', 3) # => 'AbcAbcA
我有以下字符串: std::string str = "Mode:AAA:val:101:id:A1"; 我想分离一个位于 "val:" 和 ":id" 之间的子字符串,这是我的方法: std::st
DNA 字符串可以是任意长度,包含 5 个字母(A、T、G、C、N)的任意组合。 压缩包含 5 个字母(A、T、G、C、N)的 DNA 字母串的有效方法是什么?不是考虑每个字母表 3 位,我们可以使用
是否有一种使用 levenstein 距离将一个特定字符串与第二个较长字符串中的任何区域进行匹配的好方法? 例子: str1='aaaaa' str2='bbbbbbaabaabbbb' if str
使用 OAuth 并使用以下函数使用我们称为“foo”(实际上是 OAuth token )的字符串加密 key public function encrypt( $text ) { // a
我是一名优秀的程序员,十分优秀!