[java] Java 프로그램 종료

Java 프로그램을 종료 (종료 또는 중지)하는 방법을 찾았습니다. 두 가지 해결책을 찾았습니다.

  1. 반환 사용 ;
    프로그램 실행을 종료하거나 종료하려면 이것을 추가합니다.

  2. 사용하는 ()를 System.exit와 ;
    가끔 사용했습니다. 이 질문 에서 Sytem.exit () 에 대해 읽었습니다 .

그래서 나는 그들 모두에 대해 조금 알고 있습니다. 그러나 나는 그들이 실제로 어떻게 작동하는지 여전히 혼란 스럽습니다. 아래 코드를 확인하세요 …

public class Testing {

public static void main(String... str) {
    System.out.println(1);
    System.exit(0);
    System.out.println(2);
    return;
 }
}

나는 2 가 나타나지 않을 것이라고 확신합니다 . 나는 왜 return;또는 다른 코드가 진술 아래에 쓸 수 System.exit(0);있고 실제 정의가 무엇인지 알고 싶습니다 return;( 변수 나 값이없는 나에게 이상한 일이기 때문에return )?



답변

호출 System.exit(0)(또는 해당 문제에 대한 다른 값)은 Java 가상 머신을 종료하고 현재 프로세스를 종료합니다. 전달하는 매개 변수는 java프로세스가 운영 체제에 반환 할 반환 값입니다 . 프로그램의 어느 곳에서나이 호출을 할 수 있으며 결과는 항상 동일합니다. JVM이 종료됩니다. 이것은 단순히 System클래스 에서 정적 메서드를 호출하는 것이므로 컴파일러는 수행 할 작업을 알지 못하므로 도달 할 수없는 코드에 대해 불평하지 않습니다.

return문은 단순히 현재 메서드의 실행을 중단합니다. 말 그대로 호출 메서드에 컨트롤을 반환하는 것을 의미 합니다 . 메서드가 void(예제에서 와 같이)로 선언되면 을 반환해야하므로 값을 지정할 필요가 없습니다 void. 메서드가 특정 유형을 반환하도록 선언 된 경우 반환 할 값을 지정해야하며이 값은 지정된 유형이어야합니다.

return프로그램 main이 실행중인 메인 클래스 의 메서드 내에있는 경우에만 프로그램이 종료되도록합니다 . 그 뒤에 코드를 넣으려고하면 컴파일러는 연결할 수없는 코드에 대해 불평합니다. 예를 들면 다음과 같습니다.

public static void main(String... str) {
    System.out.println(1);
    return;
    System.out.println(2);
    System.exit(0);
}

대부분의 컴파일러로 컴파일되지 않고 unreachable code두 번째 System.out.println호출을 가리키는 오류가 발생 합니다.


답변

  1. System.exit () 는 JVM을 종료시키는 메소드입니다.
  2. return 은 컨트롤을 호출 함수로 반환합니다.
  3. return 8 은 제어와 값 8을 호출 메서드로 반환합니다.


답변

System.exit()컴파일러의 또 다른 방법 이기 때문 입니다. 미리 읽지 않고 전체 프로그램이 그 시점에서 종료된다는 것을 알아냅니다 (JVM이 종료 됨). OS 또는 셸은 System.exit()메서드 에서 다시 전달되는 정수를 읽을 수 있습니다 . 0“프로그램이 종료되고 모든 것이 정상화되었습니다”를 의미하고 오류가 발생했음을 알리는 다른 값을 의미하는 것이 표준입니다 . 모든 사용자에 대해 이러한 반환 값을 문서화하는 것은 개발자의 몫입니다.

return반면에 컴파일러가 잘 알고있는 예약 된 키워드입니다.
return값을 반환하고 현재 함수의 실행을 종료하고 스택을 호출 한 함수 (있는 경우)로 다시 이동합니다. 위의 코드에서는 반환 void할 항목을 제공하지 않았으므로 반환됩니다.


답변

System.exit ()는 JVM을 종료합니다. System.exit ()가 실행 된 후에는 아무것도 없습니다. Return은 일반적으로 메소드를 종료하는 데 사용됩니다. 반환 유형이 void이면 return을 사용할 수 있습니다. 그러나 나는 그것을 주요 방법으로하는 것이 좋은 습관이라고 생각하지 않습니다. 무한 루프 또는 이상한 다른 실행이 흐르지 않는 한 프로그램을 종료하기 위해 아무것도 할 필요가 없습니다.


답변

그래서 돌아가십시오. 정말 자바 프로그램을 종료하지 않습니다 , 그것은 단지 당신의 자바 기능 (무효)를 종료합니다 . 귀하의 경우 함수는 애플리케이션의 주요 기능이기 때문에 return; 응용 프로그램도 종료됩니다. 그러나 반환; 어쨌든이 반환 직후에 함수가 종료되기 때문에 귀하의 예에서는 쓸모가 없습니다 …

을 System.exit ()는 completly 프로그램을 종료합니다 그리고 열려있는 모든 창을 닫습니다.


답변

무엇을 반환합니까? 평균?

return;정말 아무것도 반환하지 않습니다 void. 그게 다야.

왜 돌아 왔는지; 또는 다른 코드는 System.exit (0) 문 아래에 쓸 수 있습니다.

컴파일러는 호출 System.exit(0)JVM. 컴파일러는 경고 만 표시합니다- 불필요한 return 문


답변

  • 글쎄, 먼저 System.exit (0)은 프로그램을 종료하는 데 사용되며 컴파일러가 오류를 던지지는 않지만 그 아래에 명령문이있는 것은 올바르지 않습니다.
  • return;실행 제어를 부모 메서드로 반환하기 위해 void 반환 형식의 메서드에서 일반 이 사용됩니다.