Зачем использовать char[] вместо String?

на нить.java, строка 146, я заметил, что автор использовал char[] вместо String в поле "Имя". Есть ли какие-либо причины производительности, о которых я не знаю? getName() также обертывает символ в строку перед возвращением имени. Не лучше ли просто использовать String?

3 ответов


В общем, да. Подозреваю!--0--> был в Thread по соображениям производительности, еще в те дни, когда такие вещи в Java требовали всех усилий, чтобы получить достойную производительность. С появлением современных СПМ такие микрооптимизации давно стали неважными, но их просто оставили в покое.

в старом источнике Java 1.0-era много странного кода, я бы не обратил на него слишком много внимания.


трудно сказать. Возможно, они имели в виду некоторые оптимизации, возможно, человек, написавший этот код, просто больше привык к стилю c char* массивы для строк, или, возможно, к моменту написания этого кода они не были уверены, будут ли строки неизменяемыми или нет. Но с этим кодом, в любое время , создается новый массив символов, поэтому этот код на самом деле тяжелее на GC, чем просто с помощью строки.


может быть, причиной была защита? Строка может быть изменена с отражением, поэтому автор хочет копировать на чтение и запись. Если вы это делаете, вы можете также использовать массив char для более быстрого копирования.