main(), static

 

 

main() 함수

class Joker {
	public static void main(String[] args) { 
    	// TODO
	}
}

 

"Java 에서는 클래스 외부에 변수나 메서드를 위치시킬 수 없다."

C 언어에서 main() 함수는 독립적으로 존재하지만, Java 언어에서는 클래스(class) 안에 main()가 존재한다. Java의 가장 큰 특징 중 하나는 클래스 외부에 존재하는 변수나 메서드는 존재하지 않는다는 점이다. 모든 변수와 함수는 클래스 내부에 있어야 하며 main()도 예외는 아니다.

 

"main() 함수를 포함하는 실행 클래스

main() 함수를 클래스 내에 위치시키는 형태로 main() 함수를 포함하고 있는 클래스를 실행 클래스라고 부른다. 프로그램의 종료는 main() 메서드의 종료를 의미한다.



static 함수, static 변수

"static 멤버 함수에서는 일반 멤버 변수를 사용할 수 없다."

객체를 위한 메모리(memory)가 할당되기 이전에 static 메서드를 호출할 수 있기 때문이다. static 멤버 메서드는 객체의 메모리가 생성되기 전에 클래스의 이름으로 호출할 수 있다. 일반 멤버 변수의 메모리는 생성되지 않은 상태이기 때문에 static 멤버 메서드 내에서 일반 멤버 변수를 사용할 수 없는 것이다. static 멤버 변수는 객체의 메모리 생성 이전에 접근할 수 있기 때문에 static 멤버 메서드 내에서 static 멤버 변수를 사용할 수 있는 것이다. 

 

"System.out.println()에서 out은 static 변수이다."

Java 프로그램을 개발할 때 위 함수를 많이 사용한다. System은 public 클래스이고, out은 그 안에 public static로 선언된 멤버 변수이다. 그래야만 println()함수를 사용할 때 클래스 이름으로 직접 접근이 가능한 것이다. 참고로, out은 콘솔 화면으로 출력을 내보는 표준 출력 스트림이다. println()이라는 메서드는 문자열을 매개변수로 주면 도스(명령 프롬프트) 창에 문자열을 출력하는 역할을 한다.

 

// java.lang.System 클래스 
public class System { 
	public static PrintStream out; 
    ... 
}