코딩항해기

[JAVA] 출력메소드와 제어문자, 서식문자 본문

JAVA

[JAVA] 출력메소드와 제어문자, 서식문자

miniBcake 2024. 6. 19. 12:40

[요약]

출력문

println() 전달된 값을 출력하고, 줄바꿈이된다.
print()  전달된 값을 출력하고, 줄바꿈이 되지 않는다.
printf() 형식(서식 format)에 맞는 값을 넣어 출력하고, 줄바꿈이 되지 않는다. (형식지정자 사용)

* 제어문자는 앞에 \(역슬래쉬)를 붙여서 사용 (\n \t \" \\ ...)

형식지정자(서식문자)

자료형 형식지정자      
int %d decimal 10진수 정수
%o octal 8진수 정수
%x hexadecimal 16진수 정수
double %f float 소수점 6자리까지 실수
char %c character   문자
String %s String   문자열

 

형식지정자(서식문자) 옵션

%[- or 0][n][.m] 서식문자
  • -  : 왼쪽 정렬
  • 0 : 비어있는 공간을 0으로 채움(숫자자료형만가능)
  • n : 자리수
  • .m  : 소수점 아래 자리 수(실수형) / 문자열 자르기(문자열)

 

오늘은 출력문에 관련하여 정리해보겠다.

 

출력문이란, 괄호 안의 값을 콘솔에 출력하는 메소드로, 

개발자가 오류를 해결하기 위해, 또는 값을 확인하기 위해 사용된다.

 

출력메소드는 syso, sysout 단축어를 사용해 바로 완성이 가능하며 3가지의 종류가 있다.

 

println()  : 전달된 값을 출력하고 줄바꿈이된다.

print() : 전달된 값을 출력하고 줄바꿈이 되지 않는다.

printf() : 형식(서식 format)에 맞는 값을 넣어 출력하고 줄바꿈이 되지 않는다.

 

출력메소드 괄호 안에는 변수, 문자열 등이 들어갈 수 있다.

String greeting = "안녕하세요";
String name = "miniBcake";
int year = 2024;

System.out.println( greeting );

System.out.print( name + "의 ");
System.out.print( year + "년 개설된 블로그입니다.");
[console]
안녕하세요.
miniBcake의 2024년 개설된 블로그입니다.

 

이때 큰따옴표를 출력하기 위해 큰따옴표를 큰따옴표 안에 넣게 되면 오류가 발생하게 된다.

 

이는 실행할 때 위에서 아래로, 왼쪽에서 오른쪽 순서로 실행되어

큰따옴표 안에 담긴 큰따옴표가 아니라 마무리 큰따옴표로 인식하기 때문이다.

 

이러한 문제를 해결하기 위해 제어문자를 사용하게 되었다.

 


 

[제어문자]

(Escape Character / Sequence)

 

따옴표 안에서 사용되며 미리 예약된 특수한 기능을 하는 문자다.

많은 종류가 있지만, 많이 사용되는 일부 문자만 알아보겠다.

 

제어문자 설명 콘솔창(출력되었을 때)
\n 줄바꿈
(enter)
\t tap         (tab)
\" 문자열 안에 큰 따옴표 "
\'  문자열 안에 작은 따옴표 '
\\  문자열 안에서 역슬래쉬 \

 


 

[printf()] 서식출력

위에서 3가지의 출력문 중 printf()의 예시문만 작성하지 않았는데,

printf()에는 print()나 println()과는 다른 특징이 있기 때문이다.

 

printf()에는 형식지정자(서식문자)를 사용할 수 있다. 

 

변수나 정수, 실수 등을 문자열과 함께 출력하기 위해서는 연결연산자를 사용해야했던 println()과 print()와는 달리

연결연산자 없이 같은 내용을 출력가능하다. (물론 줄바꿈이 되지 않는다)

 

위의 출력문 예시를 printf()로 바꾸어보면,

String greeting = "안녕하세요";
String name = "miniBcake";
int year = 2024;

System.out.printf( "%s\n" , greeting);

System.out.printf( "%s의 ", name);
System.out.printf( "%d년 개설된 블로그입니다.", year);
[console]
안녕하세요.
miniBcake의 2024년 개설된 블로그입니다.

 

이러한 모습이 된다.

 

이처럼 printf()는 연결연산자 없이 간결하게 출력할 수 있도록 도와주지만, 

 

자동으로 줄바꿈이 되지 않기 때문에 줄바꿈이 필요할 때에는 제어문자를 사용해야한다는 점과,

 

단순한 출력문을 사용할 때에는 오히려 더 복잡하게 작용할 수 있다는 점을 고려해야한다.

 

그렇다면 서식문자는 어떻게 사용해야할까?


[형식지정자(서식문자)]

자료형 형식지정자      
int %d decimal 10진수 정수
%o octal 8진수 정수
%x hexadecimal 16진수 정수
double %f float 소수점 6자리까지 실수
char %c character   문자
String %s String   문자열

 

형식지정자(서식문자) 옵션

%[- or 0][n][.m] 서식문자
  • -  : 왼쪽 정렬
  • 0 : 비어있는 공간을 0으로 채움(숫자자료형만가능)
  • n : 자리수
  • .m  : 소수점 아래 자리 수(실수형) / 문자열 자르기(문자열)

 

이러한 형식을 따라 서식문자를 사용하게 되며, 하단은 서식문자의 옵션 예시이다.

double num = 62.123456789;
System.out.printf("%08.3f", num);
[console]
0062.123

 

8자리를 지정하였기 때문에 .을 포함하여 8자리의 숫자가 출력된 것을 볼 수있다.

비어있는 공간을 0으로 채우는 옵션을 사용하여 앞자리에 두 개의 0이 붙은 모습도 볼 수 있으며,

 

소수점 아래의 자리 수를 3개까지만 보이도록 지정하였기 때문에

62.123456789까지 출력된 것이 아니라 62.123까지만 출력된 모습도 확인할 수 있다.

 

0 옵션 대신 - 옵션을 사용할 경우,

[console]
62.123  

 

이렇게 나오게 되어 옵션이 적용되지 않는다고 생각될 수도 있는데,

텍스트를 드래그하여 보면 뒤에 스페이스(공백)이 두 개 붙어,

총 8자리가 왼쪽 정렬되어 출력되었음을 알 수 있다. (정렬하지 않을 경우 공백이 앞에 붙는다)