제어자(modifier)는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 클래스나 멤버변수와 메소드에 주로 사용되며, 여러 제어자를 조합하여 사용할 수 있다. static 인스턴스에 관계없이 같은 값을 가지며 변수 하나를 모든 인스턴스가 공유한다. static이 붙은 멤버변수, 메소드, 초기화 블럭은 인스턴스를 생성하지 않고도 사용할 수 있다. 이를 사용하면 인스턴스를 생성하지 않으므로 편리하고 속도도 더 빠르다는 장점이 있다. final 거의 모든 대상에 사용할 수 있다. 변수에 쓰면 값을 변경할 수 없고, 메소드에 쓰면 오버라이딩을 할 수 없고, 클래스에 쓰면 부모가 될 수 없다. 일반적으로 선언과 초기화를 동시에 하지만, 인스턴스 변수는 생성자에서 초기화 할 수 있다..