Char массив или String Builder - PullRequest
       12

Char массив или String Builder

0 голосов
/ 07 марта 2019

Я хотел бы знать, для конкатенации символов в Java - какой из приведенных ниже методов будет лучше для удобства чтения, обслуживания и производительности - либо 'char array', либо 'string builder'.

Методдолжен взять первую букву из обеих строк, добавить и вернуть ее.

Например: Ввод 1: ABC Ввод 2: DEF -> метод должен возвращать AD.

с использованием строителя строк:

private String getString(String str1, String str2) {
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append(str1.charAt(0));
    stringBuilder.append(str2.charAt(0));
    return stringBuilder.toString();
}

используя массив символов:

private String getString(String str1, String str2) {
    char[] charArray = new char[2];
    charArray[0] = str1.charAt(0);
    charArray[1] = str2.charAt(0);
    return String.valueOf(charArray);
}

Ответы [ 3 ]

0 голосов
/ 07 марта 2019

StringBuilder - это просто обертка вокруг char [], добавляющая такие функции, как изменение размера массива по мере необходимости; и перемещение элементов при вставке / удалении и т. д.

Возможно, будет немного быстрее использовать char [] напрямую для некоторых вещей, но вы потеряете (или должны будете переопределить) многие полезные функции.

0 голосов
/ 07 марта 2019

charArray также хорош с точки зрения производительности и читабельности, но трудно поддерживать подобный код. Это может вызвать ошибку как нулевой указатель. Вам просто нужно добавить нулевую проверку с кодом char [].

С другой стороны StringBuffer внутренне использует символ. Таким образом, char лучше здесь, и, делая это, мы не создаем объект. Память точки зрения. Хорошо не создавать это.

0 голосов
/ 07 марта 2019

Если вы посмотрите исходный код для StringBuilder, вы обнаружите, что внутри он использует char[] для представления буферизованной строки.Так что обе версии вашего кода делают очень похожие вещи.Однако я бы проголосовал за использование StringBuilder, потому что он предлагает API, который может намного больше, чем простой char[], который находится внутри его реализации.

...