1.
자바에서 하나의 프로그램에는 하나의 main 메서드만 써야 하는거로 아는데
실제로 하나의 패키지 안에 두 개의 public 클래스에 public static void main 메서드 넣으면 둘다 원활히 작동하는 이유가 뭐에요?
2. 자바에서는 c언어에서 처럼 함수나 클래스 작성 순서가 중요하지 않아 보이는데.. (밑에서 선언한 것도 위에서 끌어다 쓸 수 있음) 컴파일할때 통으로 jvm에 올려서 그런건가요?
응애새내기 답변좀 부탁두려요
자바에서 하나의 프로그램에는 하나의 main 메서드만 써야 하는거로 아는데
실제로 하나의 패키지 안에 두 개의 public 클래스에 public static void main 메서드 넣으면 둘다 원활히 작동하는 이유가 뭐에요?
2. 자바에서는 c언어에서 처럼 함수나 클래스 작성 순서가 중요하지 않아 보이는데.. (밑에서 선언한 것도 위에서 끌어다 쓸 수 있음) 컴파일할때 통으로 jvm에 올려서 그런건가요?
응애새내기 답변좀 부탁두려요
Java에서는 하나의 소스 파일에는 public 클래스가 하나만 있어야 하며, 파일의 이름과 public 클래스의 이름은 일치해야 합니다. 그러나 패키지 안에 여러 개의 클래스가 있을 수 있고, 이 중 하나의 클래스에만 public 키워드를 사용할 수 있습니다. 만약 소스 파일에 public 클래스가 없다면, 파일의 이름은 어떤 것이든 상관없습니다.
“그러나 패키지 안에 여러 개의 클래스가 있을 수 있고, 이 중 하나의 클래스에만 public 키워드를 사용할 수 있습니다.” 이거 아니지 않아요?
[그러나] 패키지 안에 여러 개의 클래스가 있을 수 있고
그리고 각 클래스 내에서 main 메서드를 가질 수 있습니다. main 메서드는 Java 프로그램의 시작점으로 사용되는 특별한 메서드이기 때문에 각 클래스에 독립적으로 존재할 수 있습니다.
따라서 하나의 패키지 안에 여러 개의 클래스가 있고, 각 클래스에 main 메서드가 있는 경우, 해당 클래스들은 개별적으로 실행될 수 있습니다. 다만, 실행 시에는 명시적으로 실행하려는 클래스를 지정해주어야 합니다. 클래스 이름을 지정하지 않으면 기본적으로 첫 번째로 선언된 클래스의 main 메서드가 실행됩니다.
하나의 main만 써야하는게 ㅇ아니라 진입점이 하나임. ide에서 실행할때 무슨 main을 시작할지 고르잖어
아 main 메서드는 여러개 쓸 수 있는데 시작점으로 쓸 수 있는건 하나인거죠?
클래스 파일 분리: 자바는 하나의 소스 파일에 여러 개의 클래스를 작성할 수 있습니다. 그러나 이들 클래스는 컴파일 과정에서 각각 별도의 클래스 파일로 컴파일됩니다. 따라서 하나의 소스 파일에서 여러 클래스를 정의하더라도, 각 클래스는 독립적인 클래스 파일로 분리되어 저장됩니다.
메서드와 변수의 호출 시점: 자바에서는 메서드와 변수를 참조할 때, 해당 메서드나 변수가 이전에 선언되었는지 여부에 상관없이 참조할 수 있습니다. 이는 메서드나 변수의 호출 시점이 선언 순서와 상관없이 가능하다는 것을 의미합니다.
정적 메서드 호출: 정적(static) 메서드는 해당 클래스가 로딩되면서 메모리에 상주하게 됩니다. 따라서 정적 메서드는 클래스가 로딩되면 언제든 호출할 수 있습니다. 이는 메서드의 정의 위치와는 무관하게 가능합니다.
컴파일러가 클래스를 컴파일할 때, 참조되는 클래스나 메서드의 정보를 메타데이터로 함께 저장하게 되므로, 참조되는 순서와는 상관없이 프로그램이 올바르게 동작할 수 있습니다. 이러한 특성으로 인해 C 언어에서의 "선언하기 전에 사용할 수 없다"는 규칙이 적용되지 않습니다.
집에 가서 읽어볼게요 ㄱㅅㄱㅅ
대체 어디서 main 함수를 여러개 정의 해놓고 씀? 엔트리 포인트는 하나다 이기야