2016-07-26 11 views
0

NetBeans IDE를 사용하고 Java 이전에는 C++ 프로그래머였습니다. C++에서 상수 변수 이름에는 대문자 만 사용해야한다는 것을 알게되었습니다. 대부분의 프로그래밍 언어에서는 상수 변수에 단어를 구분하기 위해 밑줄이있는 대문자 만 포함해야한다고 제안합니다.정적이 아닌 최종 멤버 변수가 상수 명명 규칙을 따르지 않아도되는 이유는 무엇입니까?

내 IDE 인 NetBeans는 소문자로 static 멤버 변수를 선언하려고 할 때만 규칙에 대해 경고합니다. 변수가 final이지만 고정적이라면 괜찮습니다.

final int mem1 = 90; // no warning 
static final int mem2 = 90; // warning 

(정적, 비 정적) 상수 변수의 이름을 지정하는 데 프로그래머가 대문자를 사용해야합니까?

+0

명명 규칙입니다. 당신은 그것이 가독성을 위해 따라야한다는 것이 옳았지 만, 그것이 시행 될 것인가 또는 시행되어야 할 것 같지 않습니다. – SomeJavaGuy

+0

명명 규칙은 Java 언어 사양의 일부가 아니기 때문에. – EJP

+1

비 정적 인 'final'은 실제 상수가 아닙니다. 또한 런타임에서 계산 된 값을 기반으로 생성자에서 초기화 될 수 있습니다. 참조 http://stackoverflow.com/questions/10844268/difference-between-final-variables-vs-static-final-variables –

답변

6

final은 값을 상수로 만들지 않으며 단순히 필드 값을 한 번만 할당 할 수 있음을 의미합니다. valueIntHolder 필드의 각 인스턴스에 대해 분명히 다르고, 여기서

public final class IntHolder { 
    private final int value; 

    public IntHolder(int value) { 
    this.value = value; 
    } 

    public int get() { 
    return value; 
    } 
} 

하므로는 일정하지 않다 :

여기 비정 최종 필드의 예이다. 상수와 같이 필드 이름을 지정하면 혼동을 일으킬 수 있습니다.

+0

알겠습니다. 감사 :) –

5

상수는 대문자 여야합니다. 그러나 프로그래머가 컨벤션을 따르는 방법에 따라 달라질 수 있습니다. 어떤 사람들은 '_'다음에 소문자로 된 이름으로 상수를 시작하는 것을 좋아합니다. 또한, 프로그래머의 관점에서 볼 수 있듯이 컴파일러에 이러한 검사를 할 필요가 없습니다.