자바 void란?

이진수·2024년 1월 18일
1

자바의 main 함수에 void라고 쓰여 있는 것을 본 적이 있을 것이다. 지금까지는 별 생각없이 사용했지만 그 쓰임새에 호기심이 생겨 void란 무엇이고 언제 사용되는지 알아보도록 하겠다.


📖 void의 뜻

자바에서 void는 특별한 데이터 타입으로, 함수 또는 메서드의 리턴 타입을 나타낸다. 리턴 타입이란 메서드가 수행한 작업의 결과를 반환하는 데이터 타입을 의미한다. 하지만 void는 리턴값이 없음을 나타낸다. 메서드가 어떤 작업을 수행하긴 하지만 그 결과값을 반환하지 않는 경우에 사용된다.


📖 사용하는 이유

  1. 메서드가 결과값을 반환하지 않는 경우: 메서드가 작업을 수행하긴 하지만 그 결과를 호출자에게 반환하지 않을 때 void를 사용한다.
  2. 인터페이스의 메서드: 인터페이스는 클래스가 특정 메서드를 반드시 구현하도록 강제하는 역할을 한다. 메서드는 기본적으로 "public abstract"이며, 리턴 타입은 void로 사용하는 경우가 많다. 인터페이스를 구현하는 클래스에서 이러한 메서드를 반드시 오버라이딩하여 구현해야 한다.
  3. 콜백 메서드: 콜백 메서드란 특정 이벤트가 발생했을 때 호출되는 메서드를 의미한다. 콜백 메서드는 호출자에게 결과값을 반환하지 않기에 void를 사용한다.


📖 예제 코드

public class VoidExample {

    public void printNum(int num) {
        System.out.println("숫자 출력:" + num);
    }
}

위 예제는 printNum 메서드가 void를 반환타입으로 가진다. 작업을 수행하긴 하지만 호출자에게 어떤 값을 반환하지 않고 print문을 화면에 출력하는 기능만 가진다.

이제 printNum의 메서드를 호출해 보겠다.

public class Main {
    public static void main(String[] args) {
        VoidExample ex1 = new VoidExample();
        ex1.printNum(5);
    }
}

메인 클래스에서 VoidExample 클래스의 인스턴스를 생성하고, printNum 메서드를 호출한다. 이 메서드는 화면에 "숫자 출력: 5" 라는 메시지를 출력하고 종료된다. 이때 호출자에게 어떤 값을 반환하지 않으므로 void를 사용했다.

💡 비교: 리턴값이 있는 경우

public class ReturnExample {

    public int score(int a, int b) {
        int sum = a + b;
        System.out.println(sum);
        return sum;
    }
}

위 예제 코드처럼 리턴 타입을 구성하여 메서드를 선언하면 반드시 return문으로 종료시켜 줘야 한다.



📖 메인 메서드가 public static void인 이유

이제 void에 대해 알아보았으니, 자바의 메인 메서드가 public static void인 이유에 대해 알아보자.

  • public
    public은 접근제어자이다. 어느 클래스에서든 해당 객체를 참조할 수 있다는 뜻인데, JVM이 접근하기 위해선 public을 사용해야만 한다. 다른 접근제어자를 사용할 경우 프로그램이 실행되지 않는다.
  • static
    static으로 선언하면 자바가 컴파일되는 시점에 정의된다. main메서드는 프로그램의 시작점으로 프로그램이 실행되면 가장 먼저 호출되는 메서드이기 대문에 객체를 생성하지 않은 상태로 바로 작업을 수행해야 한다. 따라서 static으로 선언해 줘야 한다.
  • void
    앞서 설명한 바와 같이 void타입은 반환할 것이 없음을 의미한다. 따라서 메인 메서드를 호출하는 JVM에서 반환값을 요구하지 않으므로 void타입을 사용한다.
profile
기록하는 개발자🧑🏻‍💻

0개의 댓글