본문 바로가기
국비학원 전 강의 필사/점프 투 자바

이어서 #06-01 콘솔 입출력 - <점프 투 자바>

by kkooHan 2022. 9. 15.

 

출처 : https://wikidocs.net/book/31

 

 

점프 투 자바

**초보 프로그래머를 위한 자바 입문서** 이 책은 문법위주의 지식보다는 이해중심의 지식을 전달하는 것을 주 목적으로 한다. 예를 들어 자바에서 잘 파악하기 힘든 개념 ...

wikidocs.net

 

 

 

 

 

 

필사 :

 

이번에는 콘솔 입출력에 대해서 알아보자.

 

 

프로그램을 실행했더니 다음과 같은 문자열이 출력되었다고 가정해 보자.

 

생년월일(YYYY/MM/DD)을 입력해 주세요 :

 

 

이렇게 사용자에게 위와 같은 문자열을 보여주는 것이 바로 콘솔 출력이고

위 질문에 사용자가 답변을 입력하는 것을 콘솔 입력이라 한다.

 

 

===

콘솔이란

 

콘솔은 환경에 따라 변경될 수 있다. 만약 이 프로그램을 인테리제이에서 실행했다면

인텔리제이의 콘솔창이 콘솔이 될 것이고 윈도우 명령창에서 이 프로그램을 실행했다면 명령창이 콘솔이 된다.

즉, 콘솔은 사용자의 입력을 받거나 사용자에게 문자열을 출력해 주는 역할을 하는 것을 통칭하는 것이다.

===

 

 

 

1. 콘솔 입력

  1-1. InputStream

  1-2. InputStreamReader

  1-3. BufferedReader

  1-4. Scanner

2. 콘솔 출력

 

 

 

1. 콘솔 입력

 

위와 같은 콘솔 출력 질문에 여러분은 아마도 다음처럼 답변을 키보드로 입력할 것이다.

 

1980/01/01

 

 

이렇게 여러분이 입력한 문자열이 바로 콘솔 입력에 해당한다.

자바 코드에서 위와 같이 입력한 문자열을 얻기 위해서는 자바의 System.in을 사용한다.

 

 

다음의 예제를 작성해 보자.

 

import java.io.IOException;

import java.io.InputStream;

 

public class Sample {

    public static void main(String[] args) throws IOException {

        InputStream in = System.in;

 

        int a;

        a = in.read();

 

        System.out.println(a);

    }

}

 

 

위에서 사용한 InputStream은 자바의 내장 클래스이다.

자바의 내장 클래스 중에 java.lang 패키지에 속해 있지 않은 클래스는 위 코드처럼

필요할 때 항상 import 해서 사용해야 한다.

우리가 그동안 사용해왔던 System이나 String 등의 클래스는

java.lang 패키지에 속해 있는 클래스이므로 별도의 import 과정이 필요없었다.

 

 

===

자바 패키지에 대한 설명은 나중에 자세하게 알아볼 것이다.

===

 

 

다음 문장에서 알 수 있듯이 System.in은 InputStream의 객체임을 알 수 있다.

 

InputStream in = System.in;

 

 

InputStream의 read 메소드는 다음처럼 1 byte의 사용자의 입력을 받아들인다.

 

int a;

a = in.read();

 

 

하지만 read 메소드로 읽은 1 byte의 데이터는 byte 자료형으로 저장되는 것이 아니라

int 자료형으로 저장된다. 저장되는 int 값은 0-255 사이의 정수값으로 아스키 코드값이다.

 

 

===

0 이라는 숫자에 해당되는 아스키코드 값은 48, a라는 문자에 해당되는 아스키코드값은 97이다.

===

 

 

이제 프로그램을 실행시켜보면 프로그램은 종료되지 않고 사용자의 입력을 대기하고 있을 것이다.

왜냐하면 InputStream의 read() 메소드가 호출되면 사용자의 입력을 받을 때까지

프로그램이 대기하기 때문이다.

 

 

이제 콘솔 창에 'a' 키를 입력해 보자. 아무런 반응이 없을 것이다.

그리고 다시 "엔터"키를 입력해 보자.

 

 

===

엔터키를 입력해야 사용자의 입력이 종료되고 프로그램에 전달된다.

===

 

 

아마도 다음과 같이 출력이 되고 프로그램은 종료될 것이다.

 

97

 

97은 사용자가 입력한 문자인 a에 해당하는 아스키 코드값이다.

 

 

===

IOException

 

위 예제에 main 메소드를 보면 throws IOException 을 사용한 부분이 있다.

InputStream으로 부터 값을 읽어들일 때는 IOException이 발생할 수 있기 때문에

예외처리를 해야 하는데 throws로 그 예외처리를 뒤로 미루게 한 것이다.

예외처리는 뒤에서 자세히 다룰 예정이니 지금은 그냥 넘어가도록 하자.

===

 

 

 

1-1. InputStream

 

 

 

 

느낀점 : 

'본명조' / 태그

댓글