JAVA - System.exit();와 return;의 차이에 대한 고찰(2022-07-18)

2022. 7. 18. 09:032층 - 앞지름과 되새김의 장/문제의 고찰

퀴즈들을 복습하면서 갑자기 생각났다.

System.exit();와 return;의 차이는 무엇일까? 일단 둘 다 프로그램이 실행되고 있으면

종료시키는 건 같다.

 

package loop_while;

import java.util.Scanner;

public class Quiz4 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String saveId, savePass, checkId, checkPass;
		saveId = savePass = checkId = checkPass = "";
		while (true) {
			System.out.println("1. 회원가입");
			System.out.println("2. 로그인");
			System.out.println("3. 나가기");
			System.out.print(">>> ");
			String select = sc.next();
			switch (select) {
			case "1":
				System.out.print("저장할 아이디 입력 : "); saveId = sc.next();
				System.out.print("저장할 비밀번호 입력 : "); savePass = sc.next();
				break;
			case "2":
				System.out.print("아이디 입력 : "); checkId = sc.next();
				System.out.print("비밀번호 입력 : ");checkPass = sc.next();
				if(checkId.equals(saveId) && checkPass.equals(savePass)) {
					System.out.println("인증 성공 !!!");
				}else {
					System.out.println("인증 실패 !!!");
				}
				break;
			case "3":
				//System.exit(0); ??
				System.out.println("프로그램 종료합니다.");
				return; //??
				
			default: System.out.println("메뉴를 입력 후 다시 입력하세요.");
			}
		}
	}

}

1. 차이점??

 

출처 - https://altongmon.tistory.com/205

 

JAVA 자바 System 클래스 프로그램 종료 exit() /// 가비지 컬렉터 gc()

System 클래스  자바 프로그램은 JVM 위에서 실행됩니다. 운영체제의 모든 기능을 자바 코드로 직접 접근하기란 어렵습니다. java.lang 패키지에 속하는 System 클래스를 이용하면 운영체제의 일부 기

altongmon.tistory.com

System.exit();는 종료가 가능하나 그 기능에 '강제' 가 있다.

우리가 어떤 기계로 일을 진행하다가 어떤 비상상황이 발생했거나 컴퓨터가 갑자기 멈춰서 

강제로 종료할 때, JAVA에서는 그런 기능을 System.exit();으로 이용한다 는 것.

 

괄호 안에 int의 변수값을 넣어주게 되는데 그게 0 일 경우는 정상적인 종료.

변수값이 그 어떤 변수의 해당하는 값이면 비정상적인 종료 를 뜻한다.

 

return은 일반 함수 속에서 return 문을 사용하면 그 함수만 종료 되지만,

main() 함수 속의 return 문은 프로그램 전체를 중지시킨다.

 

2. 결론

 

둘 다 종료라는 의미는 같다.

단, exit();에는 강제성이 존재하여 모든 함수를 종료시키는 것,

 

return은 부분적인 함수만 정상종료 시킨다는 것.(main함수는 그 전체를 종료.)

 

이게 얻은 결론이다.