다음은 저자가 Java 메인 메소드에 대한 더 고전적인 인터뷰 질문이라고 생각하는 것입니다. Java 인터뷰 질문이라기 보다는 실제로 Java에 대한 가장 기본적인 지식 질문 중 일부입니다. .오류가 있으면 지적해주세요.
1. main 메소드 없이 클래스를 정의하는 방법은 무엇입니까?
아니요, 메인 메소드 없이는 Java 클래스를 실행할 수 없습니다.
Java 7 이전에는 정적 초기화를 사용하여 Java 클래스를 실행할 수 있었습니다. 그러나 Java 7부터는 작동하지 않습니다.
2. main() 메소드에 필요한 매개변수가 문자열 배열이 아닌가요?
아니요, main() 메서드의 매개변수는 문자열 배열이어야 합니다.
다만, 변수 매개변수를 도입할 때 string형 변수 매개변수를 main() 메소드에 매개변수로 전달할 수 있습니다. 변수 매개변수는 배열이어야 합니다.
package com.instanceofjava; public class MainMethod { public static void main(String args[]) { } }
3. main() 메소드의 반환 유형을 변경할 수 있나요?
아니요, main() 메서드의 반환 유형은 비어 있어야 합니다. 다른 유형은 허용되지 않습니다.
package com.instanceofjava; public class A { public static int main(String[] args) { return 1; //run time error : No main method found } }
4. main() 메서드는 왜 정적이어야 합니까?
main() 메서드는 정적이어야 합니다.
main()이 비정적일 수 있는 경우 JVM은 기본 메서드가 호출될 때 해당 클래스를 인스턴스화해야 합니다.
인스턴스화 시 클래스의 생성자를 호출해야 합니다. 이 클래스의 생성자에 매개변수가 있으면 모호성이 발생합니다.
예를 들어, 다음 프로그램에서 클래스 "A"를 인스턴스화할 때 JVM은 어떤 매개변수를 전달합니까?
package com.instanceofjava; public class A { public MainMethod(int i) { //Constructor taking one argument } public void main(String[] args) { //main method as non-static }
5. main() 메서드를 비정적으로 선언할 수 있나요?
아니요, JVM이 해당 클래스를 인스턴스화하지 않고 main() 메서드를 호출할 수 있도록 main() 메서드를 정적으로 선언해야 합니다.
main() 메서드에서 "정적" 문을 제거하면 컴파일이 성공하더라도 런타임 시 프로그램이 실패하게 됩니다.
package com.instanceofjava; public class A { public void main(String[] args) { System.out.println("indhu"); //Run time error } }
6. main() 메소드를 오버로드할 수 있나요?
네, main() 메소드를 오버로드할 수 있습니다. Java 클래스에는 원하는 만큼의 main() 메소드가 있을 수 있습니다.
Java 클래스를 실행하려면 클래스의 main() 메서드에 "public static void main(String[] args)"와 같은 선언이 있어야 합니다. 이 선언을 변경하면 컴파일이 성공합니다. 그러나 Java 프로그램을 실행할 수 없습니다. 기본 메소드를 찾을 수 없기 때문에 런타임 오류가 발생합니다.
package com.instanceofjava; public class A { public static void main(String[] args) { System.out.println("Indhu"); } void main(int args) { System.out.println("Sindhu"); } long main(int i, long d) { System.out.println("Saidesh"); return d; } }
7. main() 메소드를 private 또는 protected로 선언할 수 있나요? 아니면 액세스 한정자 없이 선언할 수 있나요?
아니요, main() 메소드는 공개되어야 합니다. main() 메소드를 private 및 protected로 정의할 수 없으며 액세스 한정자를 사용할 수도 없습니다.
이는 JVM이 main() 메소드에 액세스할 수 있도록 하기 위한 것입니다. main() 메서드를 public으로 정의하지 않으면 컴파일은 성공하더라도 main 메서드를 찾을 수 없기 때문에 런타임 오류가 발생합니다.
package com.instanceofjava; public class A { private static void main(String[] args) { //Run time error } }
8. Java에서 main 메소드를 재정의할 수 있나요?
아니요, Java에서는 기본 메소드를 재정의할 수 없습니다. 이는 기본 메서드가 정적 메서드이고 Java에서는 정적 메서드가 컴파일 타임에 결합되므로 Java에서 정적 메서드를 재정의할 수 없기 때문입니다.
9. Java에서 메인 메소드를 종료할 수 있나요?
Java에서는 메인 메소드를 종료할 수 있습니다. JVM에는 이것에 문제가 없습니다.
10. 자바에서 메인메소드를 동기화할 수 있나요?
네, Java에서 메인 메소드를 동기화할 수 있습니다.
영문 원문: Java 인터뷰 질문 On main() 메소드