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

Sul*_*oks 0 java string resize

只是好奇我将如何添加一个字母或字符预先存在string.

这是我想要做的,

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

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

任何关于如何做到这一点的建议,或者对我最初的问题的答案都非常感谢!

谢谢,

Bha*_*hah 7

你看过了吗?

StringBuilder的追加#()

建议不要在String对象中添加字符,因为String是不可变的,每次都会创建一个新对象(如果你创建的字符串不在String池中)

更新:

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

strRef1 == strRef2而不是strRef1.equals(strRef2)

因为,String不可变和String池的概念,字符串的引用总是相等所以如果

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

例外:如果你明确地创建一个新的字符串,这将不起作用

strRef2 = new String();

  • @BhavikShah关于池的好收获,但我认为String池(使用'String #intern()')对于初学者来说有点难;-) (2认同)

Men*_*ild 5

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

  • 字符串是“final”与此无关。因为它们是“不可变的”,所以您需要一个“StringBuilder”。 (3认同)
  • 另请记住,“StringBuilder#append()”比使用 + 运算符进行字符串连接要高效得多。 (2认同)