好奇我将如何在预先存在的string
中添加字母或字符。
这是我正在尝试做的事情,
我正在取一个密钥及其密文并减去它们的值(存储在arraylist中)以找到明文值(我得到一个int,然后使用它来查找arraylist中的String值)然后继续为两个字符串中的每个字母(密码和密钥)执行此操作。
这是可能的,还是我必须使用substring
或类似的东西。
非常感谢有关如何执行此操作的建议,或对我的初始问题的回答!
谢谢,
答案 0 :(得分:7)
你有没有看过
不建议在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包含附加字母时都不要创建新的字符串