Czy są jakieś korzyści związane z wydajnością dzięki zastosowaniu private final static String
w java vs użyciu lokalnej zmiennej łańcuchowej, która musi zostać "zainicjalizowana" za każdym razem, gdy metoda jest dostępna?Łańcuchy Java: prywatna zmienna statyczna vs zmienna lokalna
ja sądzę, że za pomocą private static final
strun jest dobrą praktyką dla stałych, które się do ponownego wykorzystania w różnych częściach klasy, jednak jeśli ciąg miały być wykorzystane tylko w jednej metody, w jednym miejscu, na bardzo konkretnego powodu, że żadna inna metoda nie jest zaniepokojona, ja naprawdę wolę utrzymywać wewnętrzny interfejs klasy w czystości z mniej prywatnymi członkami, i po prostu użyj zmiennej lokalnej.
Zważywszy, że Java ma internowanie łańcuchów i rzeczywiście utrzymuje pulę z jednym egzemplarzu każdego napisu, który pobiera zadeklarowanej za pomocą cytatów (String s = "some string"
), to tam rzeczywiście będzie hit wydajność od konieczności zadeklarować/zainicjować/przypisać każdej zmiennej czas dostępu do metody kontra ciąg statyczny?
Aby było bardziej zrozumiałe, czy byłaby jakaś różnica między używaniem SS
lub 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
}
}
"* zachowuje pulę z pojedynczą kopią każdego ciągu znaków *" jest to niepoprawne. Jedynymi strunami Java interns (chyba że wywołasz 'String.intern()') są '" cytowane "' stałe w twoim kodzie. Łańcuchy skonstruowane w środowisku wykonawczym * nie * internowane w puli stałych. – dimo414
masz rację, te, do których odnosiłem się, będę edytować –