자바

자바 콘솔 입출력 Java System.in, System.out

알통몬_ 2017. 4. 4. 10:06
반응형

 

 

 



안녕하세요 알통몬입니다.
공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!
포스팅 내용이 찾아주신 분들께 도움이 되길 바라며
더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
 

 

 

 

콘솔(console) 이란 :

시스템 사용을 위해 키보드로 입력을 받고 화면으로 출력하는 소프트웨어를 말합니다.

리눅스나 유닉스는 터미널이 있고, 윈도우는 명령 프롬프트가 있다.

이클립스에도 Console 뷰가 있으며 키보드로 입력받은 값을 출력할 수 있습니다.

 

System.in 필드 : 콘솔로부터 데이터를 입력받을 때 사용됩니다.

=> System 클래스의 in 정적필드, System.in 필드는 InputStream 타입의 필드입니다.

키보드에서 어떠한 키가 입력되었는지 확인하고 싶을 경우 InputStream의 read()로 한 바이트를 읽으면 됩니다.

리턴된 정수 값에는 10진수 ASCII 코드가 들어있습니다.

InpuStream inputStream = new InputStream();

int val = inputStream.read(); // read()의 경우 한 바이트만 읽을 수 있어서 한글은 못 읽어요 ;;

 

ASCII 코드란 : 미국 표준 협회가 컴퓨터에서 문자를 숫자로 매칭하는 법을 표준화한 코드

 

System.in 예제)

import java.io.InputStream;



public class Example {

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

  System.out.println("== Menu ==");

  System.out.println("1. 예금 조회하기");

  System.out.println("2. 예금 출금하기");

  System.out.println("3. 예금 입금하기");

  System.out.println("4. 프로그램 종료 하기");

  System.out.print("메뉴를 선택하세요: ");

  

  InputStream is = System.in;

  char inputChar = (char) is.read(); // 숫자로된 아스키코드 대신 입력된 문자 그대로를 

                                                      얻고 싶을때.  

  switch(inputChar) {

   case '1':

    System.out.println("예금 조회하기를 선택하셨습니다.");

    break;

   case '2':

    System.out.println("예금 출금하기를 선택하셨습니다.");

    break;

   case '3':

    System.out.println("예금 입금하기를 선택하셨습니다.");

    break;

   case '4':

    System.out.println("프로그램 종료 하기를 선택하셨습니다.");

    break;

  }   

 }

}

 

예제2) 읽은 바이트 개수만큼 알고 싶을 경우

import java.io.InputStream;



public class Example2 {

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

  InputStream is = System.in;

  

  byte[] datas = new byte[100];

  

  System.out.print("이름 => ");

  int nameBytes = is.read(datas);

  String name = new String(datas, 0, nameBytes-2);

  

  System.out.print("하고 싶은 말 => ");

  int commentBytes = is.read(datas);

  String comment = new String(datas, 0, commentBytes-2);

  

  System.out.println("입력한 이름 => " + name); 

  System.out.println("입력한 하고 싶은 말 => " + comment); 

 }

}

 

System.out 필드 : 콘솔로 데이터를 출력하기 위하여 사용하는 System 클래스의 out 정적 필드입니다.

out은 PrintStream 타입의 필드입니다. PrintStream 은 OutputStream의 하위 클래스이고,

out 필드를 OutputStream 타입로 변환하여 사용할 수 있습니다.

OutputStream outputStream = System.out;

 

예제)

import java.io.OutputStream;



public class Example {

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

  OutputStream outputStream = System.out;  

  

  for(byte b=48; b<58; b++) {

   outputStream.write(b); // 아스키 코드 48~ 57까지의 문자 출력

  }  

  outputStream.write(10);

  

  for(byte b=97; b<123; b++) {

   outputStream.write(b);

  }  

  outputStream.write(10);  



  String poketmon = "알통몬 근육몬 괴력몬";

  byte[] poketmonBytes = poketmon.getBytes();

  os.write(poketmonBytes);

  

  os.flush();

 }

}

 

**System 클래스의 out 필드를 OutputStream 타입으로 변환해 콘솔에 출력하는 방법은 

불편합니다. => out은 원래 PrintStream 타입의 필드 => PrintStream의 print() 또는 println()을

사용하면 편합니다.

PrintStream printStream = System.out;

printStream.print( ... ) => System.out.print( ... );

이상입니다.

다음 포스팅에서는 Console 클래스와 Scanner 클래스에 대해 공부하겠습니다.

반응형