初始化后,在空字符串中添加字符

时间:2014-01-05 05:36:39

标签: java string resize

好奇我将如何在预先存在的string中添加字母或字符。

这是我正在尝试做的事情,

我正在取一个密钥及其密文并减去它们的值(存储在arraylist中)以找到明文值(我得到一个int,然后使用它来查找arraylist中的String值)然后继续为两个字符串中的每个字母(密码和密钥)执行此操作。

这是可能的,还是我必须使用substring或类似的东西。

非常感谢有关如何执行此操作的建议,或对我的初始问题的回答!

谢谢,

4 个答案:

答案 0 :(得分:7)

你有没有看过

StringBuilder#append()

不建议在String对象中添加字符,因为 String is immutable 每次都会创建一个新对象(如果您创建的字符串不在 String pool

更新:

如果您也在寻找性能,(并且通过任何更改,您的程序中会有很多字符串比较),这是我的建议:

使用strRef1 == strRef2代替strRef1.equals(strRef2)

因为String是不可变的,并且String池的引用的概念总是相等的,所以如果

strRef1.equals(strRef2)返回true strRef1 == strRef2应始终返回true。

例外:如果您创建一个明确像

的新字符串,这将无效

strRef2 = new String();

答案 1 :(得分:4)

由于String是final(设计为immutable),因此每次都需要创建新的字符串。对于重复的次数,我建议使用StringBuilder,然后(在所有char添加之后)通过toString() - 方法将其转换为String。

答案 2 :(得分:3)

你可以尝试

string += newChar;

其中string是初始String对象,newChar是要附加到原始字符串的字符串或字符。

注意:这不如使用StringBuilder.append(...)有效。如果效率对您很重要,那么使用其他方法会更好。但是,这对于非常基本的用例就足够了。

答案 3 :(得分:3)

由于字符串是不可变的,因此使用StringBuilder时,每次希望String包含附加字母时都不要创建新的字符串