본문 바로가기
프로그래밍 기초/Java Festival

[Java Festival 번외] Scanner와 Random 객체, 그리고 close 메소드에 대해 알아보기

by 제이투더문 2024. 6. 24.

 

안녕하세요, 작가 J입니다. 저희가 Java Festival 프로그램을 작성하는 과정에서 Scanner와 Random 객체를 사용하게 됩니다. 이번 번외편에서는 이 객체들에 대해 더 깊이 알아보겠습니다.

 

Scanner 객체

Scanner란?

Scanner는 Java에서 표준 입력(키보드 입력)을 처리하기 위해 사용되는 클래스입니다. 이를 사용하면 사용자가 입력한 데이터를 쉽게 읽을 수 있습니다. Scanner 객체를 통해 다양한 타입의 데이터를 읽을 수 있습니다.

 

사용 예

import java.util.Scanner;

public class Ex10 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("숫자를 입력하세요: ");
        int num = sc.nextInt();
        System.out.println("입력한 숫자: " + num);
        
        sc.close();
    }
}

 

 

  • 사용자 입력 처리: 프로그램이 실행되는 동안 사용자로부터 데이터를 입력받을 수 있게 해줍니다.
  • 다양한 데이터 타입 지원: int, double, String 등 다양한 데이터 타입을 쉽게 읽을 수 있습니다.

우리는 주로 int 타입을 받고 있지만, String도 가능합니다. 다만 호출하는 메소드가 조금 다릅니다.

 

Scanner의 close 메소드

 

Scanner 객체를 사용할 때 노란색 줄을 많이 보셨을 겁니다. 마우스를 갖다 대면

 

 

Resource leak: 'sc' is never closed 라고 뜹니다. 이는 자원이 새고 있다는 뜻이며, Scanner 객체 변수명인 sc가 닫히지 않았다고 알려줍니다. 더 자세히 알아보겠습니다.

close 메소드란?

close 메소드는 Scanner 객체가 더 이상 사용되지 않을 때 호출하여 자원을 해제하는 데 사용됩니다. 이는 메모리 누수를 방지하고 시스템 자원을 효율적으로 관리하는 데 중요합니다.

 

사용 예

import java.util.Scanner;

public class Ex10 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("숫자를 입력하세요: ");
        int num = sc.nextInt();
        System.out.println("입력한 숫자: " + num);
        
        sc.close();
    }
}

 

 

 Scanner를 통한 입력이 끝났다고 판단 될때 close 해주시면 됩니다.

 

 

  • 자원 해제: Scanner 객체가 사용하던 시스템 자원을 반환합니다.
  • 메모리 관리: 객체가 더 이상 필요하지 않을 때 메모리를 해제하여 메모리 누수를 방지합니다.
  • 파일 및 네트워크 자원 관리: Scanner가 파일이나 네트워크 입력을 처리하는 경우, 자원을 적절히 해제하여 시스템 안정성을 높입니다.

 

Random 객체

Random이란?

Random 클래스는 난수(랜덤 숫자)를 생성하는 데 사용됩니다. 게임이나 시뮬레이션 등에서 예측 불가능한 결과를 만들기 위해 자주 사용됩니다.

 

사용 예

import java.util.Random;

public class Ex10 {
    public static void main(String[] args) {
        Random rand = new Random();
        
        for (int i = 0; i < 5; i++) {
            int randomNumber = rand.nextInt(100) + 1; // 1에서 100 사이의 랜덤 수 생성
            System.out.println("랜덤 숫자: " + randomNumber);
        }
    }
}

 

 

  • 예측 불가능성: 난수를 통해 예측할 수 없는 결과를 만들어냅니다.
  • 게임 및 시뮬레이션: 다양한 시나리오를 테스트하고 시뮬레이션할 때 유용합니다.

 

 

마무리

 이번 번외편에서는 Scanner와 Random 객체, 그리고 Scanner의 close 메소드에 대해 자세히 알아보았습니다. 이러한 객체들은 Java 프로그래밍에서 자주 사용되며, 올바르게 사용하는 것이 중요합니다. 특히 자원을 적절히 해제하여 메모리 누수를 방지하는 것이 시스템 성능과 안정성에 큰 영향을 미칩니다.

 

 프로그래밍의 기본 원리를 이해하고 이를 응용하는 것은 매우 중요합니다. 특히 자바의 다양한 클래스와 메소드를 이해하고 적절히 사용하는 것은 프로그래밍 실력을 향상시키는 데 큰 도움이 됩니다. 감사합니다!