안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^ |
콘솔(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 클래스에 대해 공부하겠습니다.
'자바' 카테고리의 다른 글
자바 파일 입출력 Java File 클래스 / FileInputStream 클래스 / FileOutputStream 클래스 (0) | 2017.04.06 |
---|---|
자바 콘솔 입출력 Java Console, Scanner (0) | 2017.04.04 |
자바 입력 스트림과 출력 스트림 Java Reader, Writer (0) | 2017.04.01 |
자바 IO 출력 스트림 java OutputStream -> write(int b), write(byte[] b), write(byte[] b, int off, int len) (0) | 2017.04.01 |
자바 IO 기반의 입출력과 네트워킹 => IO 패키지 / 입력 스트림, 출력 스트림 (0) | 2017.04.01 |