2014-01-05 4 views
0

Просто любопытно, как бы я добавил букву или символ в уже существующий string.Добавить символы в пустую строку после инициализации

Вот что я пытаюсь сделать,

Я беру ключ и шифрованный текст и вычитая их значение (хранится в ArrayList), чтобы найти открытый текст значения (я получаю Int, а затем используйте это, чтобы найти значение String в arraylist), а затем продолжайте делать это для каждой буквы в двух строках (Cipher и Key).

Возможно ли это, или мне нужно использовать substring или что-то в этом роде.

Любые предложения о том, как это сделать, или ответ на мой первоначальный вопрос с благодарностью!

Спасибо,

+1

Вы не можете изменить фактический 'объекта String'; но вы можете взять переменную, ссылающуюся на объект 'String', и сделать ссылку на другую. Это то, что вам нужно? –

+0

Я собираюсь быстро отредактировать вопрос и добавить к нему дополнительные сведения. Один момент: P –

+1

Мне все еще интересно, как вы используете 'ArrayList' для хранения значения ключа. В любом случае вы можете использовать 'StringBuilder'. – Helios

ответ

6

ли вы смотрите в

StringBuilder#append()

Добавление символов в строку Объект не рекомендуется, так как String is immutable, который будет создавать новый объект каждый раз (если строка, которую вы создаете, не уже в String pool)

Обновление:

Если вы ищете производительность тоже (и каких-либо изменений есть много сравнения строк в вашей программе) вот мое предложение:

использование strRef1 == strRef2 вместо strRef1.equals(strRef2)

Так, String неизменен и концепция String пула ссылка строк всегда будет равна, так что если

strRef1.equals(strRef2) возвращается truestrRef1 == strRef2 всегда возвращает истину.

Исключение: это не будет работать, если вы создаете новую строку в явном виде, как

strRef2 = new String();

+0

Полностью забыли об этом! Спасибо за быстрое и доброе напоминание! :) –

+2

@BhavikShah Ну хорошо поймать пулы, но я думаю, что пулы строк (с использованием «String # intern()») немного сложно для начинающих ;-) –

+1

@MenoHochschild: Согласен –

4

Поскольку строка является окончательным (спроектированное в неизменны) необходимо создать каждый раз, когда новые строки. Для повторяющихся времен я рекомендую использовать StringBuilder, а затем (после всех дополнений) конвертировать его в String через toString()-метод.

+0

Гаа! Как я об этом не думал! Спасибо за быстрое напоминание! Принимая ответ, как только мне позволено! –

+1

Также учтите, что 'StringBuilder # append()' намного эффективнее, чем использование оператора + для конкатенации строк. –

+0

Я это понимаю. Как неловко, как это может звучать, я на самом деле использую StringBuilder в текущей программе, которую я пишу .... возможно, это время, когда я нахожу сна haha ​​ –

3

Вы можете попробовать

string += newChar; 

где string начальная String объект и newChar является строку или символ, который вы хотите добавить к исходной строке.

ПРИМЕЧАНИЕ: Это не так эффективно, как с использованием StringBuilder.append(...). Если для вас важна эффективность, вам лучше использовать другой метод. Это, однако, было бы достаточно для очень простых вариантов использования.

3

Поскольку строки являются неизменными, используйте StringBuilder так, чтобы не создавать новую строку каждый раз, когда вы хотите, чтобы ваша строку включать дополнительную букву

+0

Спасибо, я видел это от более ранних ответов, но спасибо за ответ независимо! –

Смежные вопросы