Зачем использовать char[] вместо String?
на нить.java, строка 146, я заметил, что автор использовал char[]
вместо String
в поле "Имя". Есть ли какие-либо причины производительности, о которых я не знаю? getName()
также обертывает символ в строку перед возвращением имени. Не лучше ли просто использовать String
?
3 ответов
В общем, да. Подозреваю!--0--> был в Thread
по соображениям производительности, еще в те дни, когда такие вещи в Java требовали всех усилий, чтобы получить достойную производительность. С появлением современных СПМ такие микрооптимизации давно стали неважными, но их просто оставили в покое.
в старом источнике Java 1.0-era много странного кода, я бы не обратил на него слишком много внимания.
трудно сказать. Возможно, они имели в виду некоторые оптимизации, возможно, человек, написавший этот код, просто больше привык к стилю c char*
массивы для строк, или, возможно, к моменту написания этого кода они не были уверены, будут ли строки неизменяемыми или нет. Но с этим кодом, в любое время , создается новый массив символов, поэтому этот код на самом деле тяжелее на GC, чем просто с помощью строки.
может быть, причиной была защита? Строка может быть изменена с отражением, поэтому автор хочет копировать на чтение и запись. Если вы это делаете, вы можете также использовать массив char для более быстрого копирования.