최종 정적 및 정적 최종의 차이점


151

코드를 선언 한 코드를 찾았습니다.

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";

그들 사이의 차이점은 무엇입니까? 아니면 다릅니다 않습니다 privatepublic?


149
그들이 다르다면, 나는 자바를 완전히 포기합니다.
Alex Lockwood

답변:


226

전혀 차이가 없습니다. Java 언어 사양의 8.3.1-클래스-필드 수정 자에 따르면 ,

둘 이상의 (명확한) 필드 수정자가 필드 선언에 나타나는 경우, 필수는 아니지만 FieldModifier 프로덕션에서 위에 표시된 순서와 일치하는 순서로 표시되는 것이 일반적입니다.

필드의 경우, 해당 프로덕션은 수정자를 다음 순서로 나열합니다.

@Annotation public protected private static final transient volatile

그리고 방법 :

@Annotation public protected private abstract static final synchronized native strictfp


9
참고로, 링크 순서는 abstract static final입니다.
sfarbota

42

그들은 동일합니다. 수정 자의 순서는 중요하지 않습니다. Java에서 수정자가 사용되는 모든 컨텍스트 에 동일한 규칙이 적용됩니다 .

그러나 대부분의 Java 스타일 안내서는 수정 자에 대해 동일한 특정 순서를 권장 / 관리합니다. 이 경우는 public static final입니다.


19
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";

위의 모든 것들은 동일하며 처음 3의 위치는 중간에 있습니다.


8

그들은 같습니다

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";

4

그들 사이의 차이점은 무엇입니까?

정적 및 최종 순서 변경에 대해 이야기하는 경우 예입니다.

개인 또는 공공에 따라 다릅니 까?

아니요, 비공개 및 공개적으로 모든 주문을 사용할 수 있습니다. 단지 차이점은 개인 변수는 클래스 외부에서 직접 액세스 할 수 없다는 것입니다.


1

이것은 코딩 스타일의 일관성을 유지하기 위해 사람들이 따르는 관습이나 관행입니다. 가독성을 향상시킵니다. 이것을 쓰는 바람직한 방법은

private static final <Type> <variable_name> = <value>;

0

물론 동일합니다. 그것은 당신의 습관과 선호에 달려 있습니다 :-). 멤버와 메소드에도 공개 정적 최종 주문을 사용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.