2014-01-05 47 views
0

只是好奇我要如何将字母或字符添加到预先存在的string将字符初始化后将字符添加到空字符串

这里是我想要做的,

我正在一个关键和密文,并减去它们的值(存储在ArrayList中)找到明文值(我得到一个int,然后使用它来查找数组列表中的字符串值),然后继续为两个字符串(密码和密钥)中的每个字母执行此操作。

这是可能的,还是我必须使用substring或沿着这些路线的东西。

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

感谢,

+1

你不能改变一个实际的'String'对象每一次;但是你可以接受一个引用一个String对象的变量,并使它引用一个不同的对象。那是你需要的吗? –

+0

我要快速编辑问题并为其添加更多详细信息。一会儿:P –

+1

我还在想你如何使用'ArrayList'来存储关键值。无论如何,你可以使用'StringBuilder'。 – Helios

回答

6

你有没有考虑

StringBuilder#append()

添加字符String对象,因为String is immutable这将创造一个新的对象,每次(如果你正在创建的字符串是不是已经在String pool不推荐)

更新:

如果您正在寻找性能也(和任何变化有你的程序有很多的字符串比较),这里是我的建议:

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

因为,String是不可改变的, String池的概念字符串的引用将始终等于所以如果

strRef1.equals(strRef2)回报truestrRef1 == strRef2应该总是返回true。

例外:如果您创建一个新的字符串明确像

strRef2 = new String();

+0

完全忘了!感谢您的快速和亲切的提醒! :) –

+2

@BhavikShah关于泳池,但我认为字符串池(使用'字符串#intern()')对初学者来说有点困难;-) –

+1

@MenoHochschild:同意 –

4

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

+0

Gaah!我怎么没有想到这一点!感谢您的快速提醒!只要我被允许就接受答案! –

+1

请注意,'StringBuilder#append()'比使用+运算符进行字符串连接更有效率。 –

+0

我意识到这一点。虽然这听起来很尴尬,但我实际上是在当前正在编写的程序中使用StringBuilder ....也许是我的时间,我有一些睡眠哈哈 –

3

你可以尝试

string += newChar; 

其中string是初始String对象和newChar是这是行不通的字符串或字符你想追加到原始字符串。

注意:这不如使用StringBuilder.append(...)有效。如果效率对你来说很重要,你最好用另一种方法。但是,这对于非常基本的用例就足够了。

3

因为字符串是不可改变的,使用StringBuilder这样你就不会创建一个新的String你希望你的字符串,包括了一封信

+0

谢谢,我已经看到了这个从早期的答案,但谢谢你的反应不管! –