본문 바로가기

JAVA

자바 기초부터 차근차근...(12)

※ chapter 12. 콘솔 입력과 출력

※ 본 문서는 윤성우의 열혈 JAVA를 정리한 글입니다.

※ 문제가 될시 바로 비공개 처리하겠습니다.

 


 

§ 콘솔 출력

 

콘솔은 컴퓨터를 대상으로 데이터를 입력 및 출력하는 장치를 총칭하는 말이다.

모니터와 컴퓨터도 콘솔 입출력 장치에 해당된다.

 

■ System.out.println & print

 

자바의 대표적인 콘솔 출력 메소드는 System.out.println()이다.

System.out.print는 개행만 이루어지지 않는 것이지 같은 메소드이다.

 

이제 이 두 메소드의 특징을 알아보자.

 

위의 예제에서 정의한 Box 클래스, StringBuilder 클래스에는 다음의 공통점이 있다.

"문자열을 반환하는 public String to String() 메소드가 정의되어 있다."

 

따라서 문자열 출력을 위해 다음과 같이 작성하였다.

System.out.println(stb.toString());

System.out.println(box.toString());

 

그러나 .toString()값을 제외해도 동일한 결과값이 나타난 것을 볼 수 있다.

이를 통해 이러한 사실을 알 수 있다

"System.out.println은 참조 값이 전달되면, 이 값의 인스턴스를 대상으로 toString 메소드를 호출한다.

그리고 이때 반환되는 문자열을 출력한다."

 

■ 문자열을 조합해서 출력하는 System.out.printf 메소드

 

이 메소드의 사용 방법은 다음과 같다.

 

System.out.printf("정수는 %d, 실수는 %f, 문자는 %c", 12, 24.5 , 'A');

정수는 %d , 실수는 %f, 문자는 %c로 출력하는 것을 알 수 있다.

(이는 사실 C언어에서 배우고 온 사람이라면 알 수 있다. 지금 정리하고 있는 나도

예전에 C언어를 공부한 적이 있어서 이 사실은 알고 있었다.)

 

%d와 같은 것을 가리켜 '서식 지정자'라고 한다.

서식 지정자들을 정리하면 다음과 같다.

%d - 10진수 정수 형태의 출력

%o - 8진수 정수 형태의 출력

%x - 16진수 정수 형태의 출력

%f - 실수의 출력

%e - e 표기법 기반의 실수 출력

%g - 출력의 대상에 따라서 %e 또는 %f 형태의 출력

%s - 문자열 출력

%c - 문자 출력

 

 

§ 콘솔 입력

 

■ Scanner 클래스

 

이 클래스가 속한 패키지는 java.util이다. 생성자중 일부는 다음과 같다.

Scanner(File source)

Scanner(String source)

Scanner(InputStream source)

 

Scanner 클래스는 생성자로 전달되는 대상으로부터 데이터를 추출하는 기능을 제공한다.

Scanner 인스턴스는 파일이나 String인스턴스 등 다양한 대상으로부터의 추출이 가능하다.

위 예제의 Scanner sc = new Scanner(source);

Scanner 인스턴스와 인자로 전달된 source와의 연결로 이어진다.

 

■ Scanner 클래스의 키보드 적용

 

앞서 보인 예제를 수정하여 Scanner 인스턴스를 키보드와 연결하자.

Scanner sc = new Scanner(source); 이문장이 다음 문장으로 바뀐다.

Scanner sc = new Scanner(System.in);

 

예제를 보면서 확인하자

실행 과정에서 nextInt 메소드가 호출되면 키보드로부터 데이터가 입력될 때까지

프로그램의 실행이 대기 상태에 놓인다.

정수를 입력한 다음에 엔터를 눌러서 키보드 입력을 하면 정수를 읽어 들이고 실행을 이어나간다.

 

■ Scanner 클래스의 주요 메소드들

 

다양한 데이터를 추출할 수 있도록 메소드가 정의되어 있다.

일부를 보자

int nextInt() / byte nextByte() / String nextLint() / double nextDouble() / boolean nextBoolean()

 

마지막으로 예제를 확인하고 넘어가도록 하자.

끝으로, nextByte nextInt는 둘 다 정수의 입력을 위한 메소드이다. 반환형에 차이만 있을 뿐이다.