2012-06-27 28 views
99

Tôi tìm thấy một mã nơi nó tuyên bố mã nhưSự khác nhau giữa static final và static final

private final static String API_RTN_SUCCESS = "0"; 
private final static String API_RTN_ERROR = "1"; 

public static final String SHARED_PREFERENCE_CONFIG = "shared_preference_config"; 
public static final String STARTUP_SETTING_KEY = "startup_setting"; 

sự khác biệt giữa chúng là gì hoặc là họ giống nhau không? Hoặc nó có khác với private hoặc public?

+112

Nếu chúng khác nhau, sau đó tôi từ bỏ hoàn toàn java. –

+13

Bí mật Thánh: http://static.squarespace.com/static/518f5d62e4b075248d6a3f90/t/519bef92e4b02745db13b165/1369173914913/eol.jpg?format = 750w –

Trả lời

156

Không khác biệt nào cả. Theo 8.3.1 - Classes - Field Modifiers of the Java Language Specification,

Nếu hai hoặc nhiều (riêng biệt) bổ lĩnh vực xuất hiện trong một tuyên bố lĩnh vực, nó là phong tục, dù không bắt buộc, mà chúng xuất hiện theo thứ tự phù hợp với những gì thể hiện ở trên trong sản xuất cho FieldModifier .

Đối với các trường, việc sản xuất cho biết liệt kê các từ bổ nghĩa theo thứ tự này:

@Annotationpublicprotectedprivatestaticfinaltransientvolatile

Và đối với các phương pháp:

@Annotationpublicprotectedprivateabstractstaticfinalsynchronizednativestrictfp

+5

Để tham khảo, thứ tự từ liên kết là 'abstract static final'. – sfarbota

8

Họ là cùng,

private final static String API_RTN_ERROR = "1"; 

private static final String API_RTN_ERROR= "1"; 
28

Họ đều giống nhau. Thứ tự của các công cụ sửa đổi không đáng kể. Và lưu ý rằng quy tắc tương tự áp dụng trong các ngữ cảnh tất cả nơi các công cụ sửa đổi được sử dụng trong Java.

Tuy nhiên, hầu hết các hướng dẫn kiểu Java đề xuất/ủy nhiệm cùng thứ tự cụ thể cho các công cụ sửa đổi. Trong trường hợp này, nó là public static final.

4

Sự khác biệt giữa chúng hoặc chúng giống nhau?

Nếu bạn đang nói về việc thay đổi thứ tự tĩnh và cuối cùng thì có chúng giống nhau.

nó có khác nhau cho riêng tư hay công khai không?

Không, bạn có thể sử dụng bất kỳ đơn hàng nào ở chế độ riêng tư và công khai. Chỉ khác biệt là các biến riêng tư sẽ không thể truy cập trực tiếp bên ngoài lớp.

16
private static final String API_RTN_ERROR= "1"; 
private final static String API_RTN_ERROR= "1"; 
static private final String API_RTN_ERROR= "1"; 
static final private String API_RTN_ERROR= "1"; 
final static private String API_RTN_ERROR= "1"; 
final private static String API_RTN_ERROR= "1"; 

thậm chí tất cả ở trên đều giống như vị trí của ba số đầu tiên có thể xen lẫn.