Java Scanner 이해하기[이것이 자바다]

SUUUI·2025년 4월 5일

java

목록 보기
10/16

Scanner 란?

키보드로 부터 입력된 데이터를 읽고 변수에 저장하는 기능을 제공하는
클래스(java.util 패키지에 있는 클래스) 이다 .
Scanner 객체를 생성하여 사용하므로 참조형 타입 에 해당된다

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        // Scanner 객체 생성 - 참조형 객체
        Scanner scanner = new Scanner(System.in);
        
        // 입력 받기
        System.out.print("이름을 입력하세요: ");
        String name = scanner.nextLine();
        
        // 자원 해제 
        //Java 7 이상부터는 블럭이 닫히면 자동으로 자원해제가 된다 
        scanner.close();
    }
}

이 예제 코드에서 scanner는 Scanner 클래스의 인스턴스이며 ,
스택에 저장된다. 이 변수는 Scanner 객체의 참조값(메모리 주소) 을 담고 있다.

new Scanner(System.in) 생성된 Scanner 객체는 에 저장되며
사용자의 입력을 받기 전까지 블로킹(대기) 상태이다.
사용자가 문자열을 입력하고 Enter를 누르면,
그 문자열이 String 객체로 생성되어 힙 메모리 에 저장된다.

✅헷깔리면 안되는거
입력된 문자열은 Scanner 객체 자체에 할당되는 것이 아니라,
Scanner가 내부 버퍼에서 읽은 데이터를 기반으로 새로운 String 객체를 생성하고,
이 객체의 참조가 str 변수에 할당된다.
이 String 객체는 일반 힙 영역에 생성되며, 자동으로 문자열 상수 풀(String Pool)에 저장되지는 않음

String name = scanner.nextLine();

엔터키를 누르면 입력된 문자열을 읽어서 String name 변수에 저장한다 .
name 은 스택에 참조 변수로 저장되며 , name 에 저장될 입력받은 문자열은 위에 설명대로
상수풀(String constant pool) 이 아닌 일반 힙 메모리에 저장된다.
그리하여 String 객체의 참조값이 name 변수에 할당하게 된다 .

profile
간단한 개발 기록

0개의 댓글