Java 출력 함수 — print, println, printf와 문자열 결합
요약
Java의 출력 함수 System.out.print(), println(), printf()의 차이점과 + 연산자를 이용한 문자열 결합 규칙을 정리합니다. 정보처리기사 실기에서 출력 결과를 정확히 쓰기 위한 핵심 개념입니다.
핵심 정리
| 개념 | 설명 |
|---|---|
System.out.print() | 출력 후 줄바꿈 없음 |
System.out.println() | 출력 후 줄바꿈 |
+ 문자열 결합 | 한쪽이 문자열이면 나머지도 문자열로 변환하여 이어붙임 |
+ 계산 순서 | 왼쪽에서 오른쪽으로 순서대로 계산 |
System.out.printf() | 서식 지정자(%d, %s, %f)로 형식을 지정하여 출력, 줄바꿈 없음 |
print()와 println()의 차이
Java에서 화면에 값을 출력할 때 System.out.print()와 System.out.println() 두 가지를 사용합니다. System.out1을 앞에 붙여야 화면에 출력됩니다. 차이는 출력 후 줄바꿈을 하느냐 안 하느냐입니다.
두 메서드2의 차이를 표로 정리하면 다음과 같습니다.
| 메서드 | 줄바꿈 |
|---|---|
System.out.print() | 안 함 |
System.out.println() | 함 |
+ 연산자로 문자열 결합
Java에서 + 연산자는 양쪽이 모두 숫자이면 덧셈을 합니다. 하지만 한쪽이라도 문자열이면 나머지도 Java가 알아서 문자열로 바꾸어 이어붙입니다.
계산 순서에 주의 — 왼쪽에서 오른쪽으로
+ 연산자는 왼쪽에서 오른쪽으로 순서대로 계산됩니다. 어디서 문자열이 등장하느냐에 따라 결과가 완전히 달라집니다.

왼쪽부터 계산합니다:
1 + 2→ 양쪽 모두 숫자 → 덧셈 → 33 + "감자"→ 한쪽이 문자열 → 이어붙이기 → "3감자"
"감자" + 1→ 한쪽이 문자열 → 이어붙이기 → "감자1""감자1" + 2→ 한쪽이 문자열 → 이어붙이기 → "감자12"
char 산술
먼저 따옴표 모양에 따라 3이 전혀 다른 값이 된다는 점을 구분해야 합니다.
| 표기 | 종류 | 의미 |
|---|---|---|
3 | 숫자(int) | 정수 3 |
'3' (작은따옴표) | 문자(char) | 글자 하나 3 |
"3" (큰따옴표) | 문자열(String) | 글자 3으로 된 문자열 |
문자(char)는 컴퓨터 안에서 문자마다 정해진 코드 값(정수) 으로 표현됩니다. 숫자 모양의 문자도 마찬가지라서, 문자 '3'의 코드 값은 3이 아니라 51입니다.
| 문자 | '0' | '1' | '2' | '3' | 'A' | 'B' | 'C' |
|---|---|---|---|---|---|---|---|
| 코드 값 | 48 | 49 | 50 | 51 | 65 | 66 | 67 |
char끼리, 또는 char와 int를 + / -로 계산하면 Java는 char를 코드 값(int)으로 바꾼 뒤 계산합니다. 그래서 아래 예제들의 결과는 모두 int입니다4.
| 식 | 내부 계산 | 결과 |
|---|---|---|
'C' - 'A' | 67 - 65 | 2 |
'0' + 5 | 48 + 5 | 53 |
'A' + 'B' | 65 + 66 | 131 |
1 + '3'은 왜 52일까?
1 + '3'은 숫자와 문자의 덧셈입니다. 문자열이 없으므로 이어붙이지 않고, 문자 '3'을 코드 값으로 바꿔 더합니다.
'3'→ 코드 값 511 + 51→ 덧셈 → 52
반면 문자열이 먼저 등장하면 char는 숫자로 바뀌지 않고 글자 그대로 이어붙습니다. 좌결합 계산 중 어느 단계부터 String이 되었느냐가 핵심입니다.
| 식 | 출력 | 설명 |
|---|---|---|
1 + 3 | 4 | 숫자끼리 덧셈 |
1 + '3' | 52 | 문자 코드 값 51과 덧셈 |
1 + "3" | 13 | 문자열로 이어 붙임 |
"1" + '3' | 13 | 문자열과 문자를 이어 붙임 |
"A" + 'B' + 1 | AB1 | "AB"가 된 뒤 1도 이어 붙임 |
빈 문자열 "" 활용
숫자를 문자열로 바꾸고 싶을 때 빈 문자열 ""을 더하는 패턴이 시험에 종종 출제됩니다.
String5은 문자열을 담는 타입입니다.
printf()로 서식 출력
printf()는 서식 지정자6를 사용하여 출력 형식을 지정합니다. print()와 마찬가지로 줄바꿈을 하지 않지만, %d 같은 서식 지정자로 출력 형식을 세밀하게 지정할 수 있다는 점이 다릅니다.
서식 지정자는 여러 개 사용할 수 있습니다. 순서대로 뒤에 나열한 값이 채워집니다.
주요 서식 지정자
| 서식 지정자 | 의미 | 예시 |
|---|---|---|
%d | 정수(1, 42 같은 소수점 없는 숫자) | printf("%d", 42) → 42 |
%s | 문자열 | printf("%s", "감자") → 감자 |
%f | 실수 (소수점 6자리) | printf("%f", 3.14) → 3.140000 |
%c | 문자 1개 | printf("%c", 'A') → A |
%% | % 기호 자체 | printf("100%%") → 100% |
%f는 소수점 이하 6자리를 출력하며, 자리가 부족하면 0으로 채웁니다. 3.14를 출력하면 3.140000이 되는 이유입니다.
%c는 작은따옴표로 감싼 문자 1개를 출력합니다. 작은따옴표('A')는 문자 하나를, 큰따옴표("A")는 문자열을 나타내는 점이 다릅니다.
자릿수 지정
서식 지정자에 숫자를 넣어 자릿수를 지정할 수 있습니다.
빈칸이 눈에 보이도록 앞뒤에 |를 붙여 출력해 보겠습니다.
%5d는 총 5칸을 확보한 뒤 숫자를 오른쪽에 맞춥니다. 42는 2자리이므로 5 - 2 = 3칸이 왼쪽에 빈칸으로 남습니다.
%-5d처럼 -를 붙이면 5칸 안에서 왼쪽에 맞추고, 남은 3칸은 오른쪽 빈칸이 됩니다.
%.2f는 소수점 이하 2자리까지 출력합니다.
연습 문제
Footnotes
-
Java에서 화면(표준 출력)에 값을 보내는 통로입니다.
System은 시스템 기능을 담은 클래스,out은 그 안의 출력 객체입니다. ↩ -
Java에서 특정 동작을 수행하는 코드 묶음입니다. 다른 언어에서는 함수라고도 합니다. ↩
-
엄밀히는 Java의
char는 UTF-16 코드 단위이지만, 영문자·숫자 문자의 코드 값은 ASCII와 동일합니다. ↩ -
항상 int인 것은 아닙니다.
'3' + 1L처럼long과 계산하면long,'3' + 1.0처럼double과 계산하면double이 됩니다. 더 큰 타입 쪽으로 맞춰집니다. ↩ -
Java에서 문자열을 저장하는 참조 타입입니다.
int,double같은 기본 타입과 달리 대문자로 시작합니다. ↩ -
출력할 값이 들어갈 자리를 표시하는 기호입니다.
%d는 정수,%s는 문자열 자리를 나타냅니다. ↩