[Java] 자바 기본 입출력문 System 클래스 (System.out, in, err) 정리

모든 프로그래밍 언어에는 시스템 표준 입력장치와 표준 출력장치가 있습니다. 일반적으로 표준 입력장치는 키보드를 의미하고, 표준 출력장치는 모니터 스크린을 말합니다. 자바에서는 java.lang.System이라는 표준 입출력을 제공하는 클래스가 있고 System의 멤버 변수인 in, out, error를 이용해서 표준 입력, 표준 출력, 표준 에러를 사용할 수 있습니다.

 

자료형 멤버 변수 설명
static PrintStream out 표준 출력 스트림
static InputStream in 표준 입력 스트림
static OutputStream err 표준 에러 스트림

System.out은 표준 출력, System.In은 표준 입력 스트림이며 System.err는 표준 에러 스트림으로 빨간색으로 오류 메시지를 출력할 때 사용합니다. 또한 System클래스는 java.lang에 속해있어 import 하지 않아도 되며 의 멤버 변수 out, in, err는 모두 정적(static) 변수로써 System 클래스를 따로 정의하지 않아도 즉각적으로 사용하실 수 있습니다.

 

 자바 표준 출력문(System.out) 

System.out.println(리터럴 또는 변수);
메소드 설명
println(리터럴 또는 변수) 괄호 안의 내용을 출력하고 개행
print(리터럴 또는 변수) 괄호 안의 내용을 출력하고 개행은 하지 않음
printf(형식문자열, 값) 괄호 안의 형식대로 값을 출력

 

표준 출력문 예제

public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        char c = 'A';
        String d = "str";
		
        /*리터럴*/
        System.out.println("내용"); // 출력 + 개행
        System.out.println(123); // 출력 + 개행
        System.out.print("내용\n"); // 출력 + 개행 (개행문자 \n 사용)
        System.out.print("내용"); // 출력 + 개행 X
        
        /*변수*/
        System.out.println(a); //int 출력
        System.out.println(c); //char 출력
        System.out.println(d); //String 출력
		
        System.out.println(a + b); // 변수와 변수의 연산
        System.out.println(a + c); // C변수의 (A)라는 문자를 아스키코드값 65로 인식
        System.out.println("문자열" + d);  // "문자열"+변수 => 문자열
        System.out.println(c + d); // 문자 + 문자열 = > 문자열
    }
}

자바를 배울때 가장 처음 배우는 기본적인 출력문입니다. println은 개행이 되고 print는 개행이 되지 않는다는 차이가 있습니다.

참고로 이클립스에서는 sysout을 입력하고 자동 완성(Shift + Space)를 누르시면 System.out.println();을 빠르게 완성하실 수 있습니다.

 

서식이 있는 출력 (printf)

지시자 설명
%b 논리형식으로 출력
%d 정수형식으로 출력
%o 8진수 형식으로 출력
%x 또는 %X 16진수 형식으로 출력
%f 실수형식으로 출력
%c 문자형식으로 출력
%s 문자열형식으로 출력
%n 줄바꿈
%e 또는 %E 지수 표현식의 형식으로 출력

 

서식 출력 printf 예제

public class Main {
    public static void main(String[] args) {
    	
        //printf를 사용하면 지시자 형식으로 값을 출력할 수 있다. (개행 %n)
        System.out.printf("논리형식으로 출력 : %b %n",1);
        System.out.printf("정수형식으로 출력: %d %n",100);
        System.out.printf("8진수 형식으로 출력: %o %n",100);
        System.out.printf("16진수 형식으로 출력: %x %n",100);
        System.out.printf("실수형식으로 출력: %f %n",3.14);
        System.out.printf("문자형식으로 출력: %c %n",'a');
        System.out.printf("문자열 형식으로 출력: %s %n","str");
        System.out.printf("지수 표현식의 형식으로 출력: %f %n",3.14);
        
        //자리수 지정했을 경우  오른쪽으로 정렬된다.(남는 자리수는 공백)
        //정수
        System.out.printf("4자리 정수,왼쪽 빈자리 공백 : %4d %n",10); //__10
        System.out.printf("4자리 정수,오른쪽 빈자리 공백 : %-4d %n",10); //10__
        System.out.printf("4자리 정수,왼쪽 빈자리 0 채움 : %04d %n",10); //0010
        
        //실수
        System.out.printf("상수 7자리,소수점 2자리,왼쪽 빈자리 공백: %10.2f %n", 123.45); //____123.45
        System.out.printf("상수 7자리,소수점 2자리,오른쪽 빈자리 공백 : %-10.2f %n", 123.45); //123.45____
        System.out.printf("상수 7자리,소수점 2자리,왼쪽 빈자리 0 채움 : %010.2f %n", 123.45); //0000123.45
        
        //문자열
        System.out.printf("5자리 문자열,왼쪽 빈자리 공백:%5s %n", "str"); //__str
        System.out.printf("5자리 문자열,오른쪽 빈자리 공백:%-5s %n", "str"); //str__
        
        //특수문자
        System.out.printf("탭(tab): \t");
        System.out.printf("줄바꿈: \n");
        System.out.printf("%연산자: %%");
    }
}

C언어에서 주로 사용하는 서식 지정 출력방식도 printf 함수를 활용하여 자바에서 사용하실 수 있습니다. 

 

 자바 표준 입력문(System.in) 

int input = System.in.read();

자바 키코드

 숫자  알파벳  기능키  방향 키
0 = 48
1 = 49
2 = 50
3 = 51
4 = 52
5 = 53
6 = 54
7 = 55
8 = 56
9 = 57
A = 65
B = 66
C = 67
D = 68
E = 69
F = 70
G = 71
H = 72
I = 73
J = 74
K = 75
L = 65
M = 77
N = 78
O = 79
P = 80
Q = 81
R = 82
S = 83
T = 84
U = 85
V = 86
W = 87
X = 88
Y = 89
 = 90
a = 97 
b = 98
c = 99
d = 100
e = 101
f = 102
g = 103
h = 104
i = 105
j = 106
k = 107
l = 108
m = 109
n = 110
o = 111
p = 112
q = 113
r = 114
s = 115
t = 116
u = 117
v = 118
w = 119
x = 120
y = 121
z = 122

 Backspace = 8
Tab = 9
Enter = 13, 10
Shift = 16
Ctrl = 17
Alt = 18
ESC = 27
Space = 32
Pageup = 33
Pagedown = 34
← = 37
↑ = 38
→ = 39
↓ = 40

표준 입력문 예제

import java.io.IOException;

public class Main {
    //throws IOException 필수
    public static void main(String[] args) throws IOException {
    	
        //입력문
        int input;
        input = System.in.read(); //input에 키 값 입력
    	
        //출력문
        System.out.println("입력값 :" + input);
    }
}

System 클래스 in 멤버 변수를 사용하면 키보드의 키 1개를 입력받을 수 있습니다. 해당 입력값은 키코드 값으로 저장되며 조금 더 다양한 입력을 받고 싶으시다면 자바 util에 있는 Scanner 클래스를 활용하시는 것이 좋습니다.

[Java] 자바 기본 입력문 Scanner 클래스 사용법 & 예제 총정리

 

 자바 표준 에러 출력문(System.err) 

System.out.println(리터럴 또는 변수);

※ System.out과 메서드는 모두 같음

 

표준 에러 출력문 예제

public class Main {
    public static void main(String[] args) {
    	
        //printf를 사용하면 지시자 형식으로 값을 출력할 수 있다. (개행 %n)
        System.err.printf("논리형식으로 출력 : %b %n",1);
        System.err.printf("정수형식으로 출력: %d %n",100);
        System.err.printf("8진수 형식으로 출력: %o %n",100);
        System.err.printf("16진수 형식으로 출력: %x %n",100);
        System.err.printf("실수형식으로 출력: %f %n",3.14);
        System.err.printf("문자형식으로 출력: %c %n",'a');
        System.err.printf("문자열 형식으로 출력: %s %n","str");
        System.err.printf("지수 표현식의 형식으로 출력: %f %n",3.14);
        
        //자리수 지정했을 경우  오른쪽으로 정렬된다.(남는 자리수는 공백)
        //정수
        System.err.printf("4자리 정수,왼쪽 빈자리 공백 : %4d %n",10); //__10
        System.err.printf("4자리 정수,오른쪽 빈자리 공백 : %-4d %n",10); //10__
        System.err.printf("4자리 정수,왼쪽 빈자리 0 채움 : %04d %n",10); //0010
        
        //실수
        System.err.printf("상수 7자리,소수점 2자리,왼쪽 빈자리 공백: %10.2f %n", 123.45); //____123.45
        System.err.printf("상수 7자리,소수점 2자리,오른쪽 빈자리 공백 : %-10.2f %n", 123.45); //123.45____
        System.err.printf("상수 7자리,소수점 2자리,왼쪽 빈자리 0 채움 : %010.2f %n", 123.45); //0000123.45
        
        //문자열
        System.err.printf("5자리 문자열,왼쪽 빈자리 공백:%5s %n", "str"); //__str
        System.err.printf("5자리 문자열,오른쪽 빈자리 공백:%-5s %n", "str"); //str__
        
        //특수문자
        System.err.printf("탭(tab): \t");
        System.err.printf("줄바꿈: \n");
        System.err.printf("%연산자: %%");
    }
}

err는 out과 사용법은 같지만 콘솔에서 찍히는 폰트 컬러가 빨간색으로 출력된다는 차이가 있습니다.

댓글

Designed by JB FACTORY