Есть ли какое-либо преимущество в производительности с помощью private final static String
в java vs с использованием локальной строковой переменной, которая должна «инициализироваться» каждый раз при обращении к методу?Строки Java: частные статические и локальные переменные производительности
Я думаю, что использование строк private static final
является хорошей практикой для констант, которые используются повторно в разных частях класса, однако если строка должна использоваться только одним способом в одном месте по очень определенной причине, никакого другого метода не беспокоит, я действительно предпочитаю, чтобы внутренний класс был чист с меньшими частями и просто использовал локальную переменную.
Учитывая, что java имеет интернирование внутри строки и фактически сохраняет пул с единственной копией каждой строки, которая объявляется с использованием кавычек (String s = "some string"
), действительно ли может быть удар по производительности, связанный с необходимостью объявлять/инициализировать/назначать переменную каждый время, к которому обращается метод, с использованием статической строки?
Чтобы сделать его более понятным, будет ли разница между использованием SS
или LS
?
class c {
private final static String SS = "myString";
private void method(){
//do something with SS
}
private void OtherMethod(){
String LS = "myOtherString"
//do same thing with LS
}
}
"* хранит пул с единственной копией каждой строки *" это неверно. Единственными строками Java-стажеров (если вы не называете 'String.intern()'), являются '' цитируемые ''константы в вашем коде. Строки, созданные во время выполнения, * не * интернированы в пуле констант. – dimo414
Вы правы, те, на которых я ссылался, я отредактирую –