Có lợi ích hiệu suất nào khi sử dụng một số private final static String
trong java hay không bằng cách sử dụng một biến chuỗi cục bộ để có được "khởi tạo" mỗi khi phương thức được truy cập?Java Strings: private static vs local variable hiệu suất
Tôi nghĩ rằng việc sử dụng các chuỗi private static final
là một thực hành tốt cho các hằng số được sử dụng lại ở các phần khác nhau của một lớp, tuy nhiên, nếu một chuỗi chỉ được sử dụng trong một phương pháp. không có phương pháp nào khác được quan tâm, tôi thực sự thích giữ giao diện nội bộ của lớp sạch hơn với các thành viên riêng tư ít hơn và chỉ sử dụng một biến cục bộ.
Cho rằng java có chuỗi interning, và thực sự giữ một hồ bơi với một bản sao của mỗi chuỗi được khai báo bằng cách sử dụng dấu ngoặc kép (String s = "some string"
), sẽ thực sự có hiệu suất trúng từ phải khai báo/khởi tạo/gán biến thời gian phương pháp được truy cập so với sử dụng một chuỗi tĩnh?
Để làm rõ hơn một chút, có sự khác biệt nào giữa việc sử dụng SS
hoặc LS
không?
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
}
}
"* giữ một hồ bơi với một bản sao của mỗi chuỗi khác nhau *" điều này là không chính xác. Chỉ các chuỗi Java thực tập (trừ khi bạn gọi 'String.intern()') là '" được trích dẫn "' hằng số trong mã của bạn. Các chuỗi được xây dựng trong thời gian chạy là * không * được tập trung trong nhóm hằng số. – dimo414
bạn là đúng, những người mà tôi đang đề cập đến, tôi sẽ chỉnh sửa –