티스토리 뷰

📌 형식화 출력 함수 printf( )

println()과 동일하게 출력을 돕는 함수이나, 출력 형식을 지정할 수 있다는 차이점이 있다. 그리고 println()과 달리 개행이 포함되어 있지 않으므로, 개행을 원하는 경우 지시자를 사용해야 한다.

 

1. 지시자

지시자 설명 예시 출력 결과
%b boolean 형식으로 출력 System.out.printf( "%b", true);  true
%d 10진수의 형식으로 출력 System.out.printf( "%d", 10); 10
%o 8진수의 형식으로 출력
System.out.printf( "%o", 10); 12
%x, %X 16진수의 형식으로 출력 System.out.printf( "%x", 10); a
%f 부동 소수점 형식으로 출력 System.out.printf( "%f", 0.10 ); 0.1000000
%e, %E 지수 형태로 출력 System.out.printf( "%e", 0.10 ); 1.000000e-01
%c '문자'로 출력 System.out.printf( "%c", 'A'); A
%s "문자열" 로 출력 System.out.printf( "%s", "apple"); apple
%n, \n
개행 System.out.printf( "%n");  

✔ 문자형 데이터를 정수형으로 출력하고 싶다면, 반드시 형 변환을 해야 지시자로 받아 출력할 수 있다.

✔ 지시자의 % 뒤에 붙이는 숫자나 기호를 사용해 다양한 형태로 출력할 수 있다.

 

//정수형
System.out.printf( "%5d%n", 1 );	//    1
System.out.printf( "%-5d%n", 1 );	//1
System.out.printf( "%05d%n", 1 );	//00001
//실수형
System.out.printf( "%14.10f%n", 1.123451234512345 );	//  1.1234512345
System.out.printf( "%.10f%n", 1.123451234512345 );	//1.1234512345
System.out.printf( "%.12f%n", 1.123451234512345 );	//1.123451234512
System.out.printf( "%014.10f%n", 1.123451234512345 );	//001.1234512345
//문자열
String str = "Hello World";
System.out.printf( "%s%n", str );		//Hello World			문자열 길이만큼 출력
System.out.printf( "%20s%n", str );		//         Hello World		20글자 출력(우측정렬)
System.out.printf( "%-20s%n", str );		//Hello World  			20글자 출력(좌측정렬)
System.out.printf( "%.8s%n", str );		//Hello Wo			왼쪽에서 8글자 출력

 

2. 입력 받기 (Scanner 클래스)

import java.util.Scanner;

✔ 문자열을 입력받기 위해서는 java.util.Scanner를 import 해야 한다.

✔ Scanner의 객체를 생성해 주소를 저장한 참조 변수를 통해 Scanner에 속한 nextLine() 메서드를 사용할 수 있다.

Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int n = sc.nextInt();
float f = sc.nextFloat();

✔ 다양한 메서드를 사용해 문자열이 아닌 자료형의 값도 입력받을 수 있지만 사용이 까다롭다.

✔ 차라리 nextLine() 메서드를 사용해 문자열을 입력받아와 적절하게 형 변환을 하여 사용하는 것을 추천.

 

3. 명시적 형변환

(자료형)피연산자

✔  정해진 자료형이 아닌 다른 자료형으로 변환하는 것을 형변환(casting)이라고 한다.

✔  여기에 사용되는 괄호를 캐스트 연산자, 또는 형변환 연산자라고 부른다.

✔  자료형을 바꾸어주는 메서드를 사용해 형변환을 할 수도 있다.

✔  이렇듯 사용자가 의도하여 연산자나 메서드를 사용해 형변환하는 경우, 명시적 형변환이라고한다.

 

✔  캐스트 연산자를 사용한 형변환은 일시적이기 때문에 피연산자의 자료형에는 영향을 주지 않는다.

✔  기본 자료형 중 boolean을 제외하면 모든 자료형은 형변환이 가능하다.

✔  범위가 작은 자료형을 큰 범위의 자료형으로 형변환을 하는데에는 문제가 없다.

✔  범위가 큰 자료형을 작은 범위의 자료형으로 형변환을 하는 경우 의도하지 않은 결과가 나올 수 있으니 주의하자.

 

4. 묵시적 형변환

✔  서로 다른 자료형의 연산을 할 때, 형변환을 하지 않았다면 컴파일러가 생략된 형변환을 자동으로 진행한다.

✔  이 때, 컴파일러는 기존의 값을 최대한 보존할 수 있는 자료형으로 자동 형변환한다.

✔  서로 다른 자료형인 경우 보통 표현 범위가 넓은 쪽으로 자동 형변환된다.

✔  다만 실수형은 정수형보다 값을 더 자세하게 표현하기 때문에, 같은 범위나 크기를 가질지라도 실수형으로 형변환된다.

✔  만약 어느 쪽으로의 형 변환도 값을 제대로 표현하지 못하고 손실되는 경우 자동 형변환을 수행하지 않는다.

 

 

 

 

[참고] 자바의 정석

'BackEnd > JAVA' 카테고리의 다른 글

[Ch.03] 2. 단항 연산자  (0) 2021.02.28
[Ch.03] 1. 연산자  (0) 2021.02.28
[Ch.02] 상수와 리터럴  (0) 2021.02.20
[Ch.02] 자료형-기본형, 참조형  (0) 2021.02.20
[Ch.02] 변수의 선언과 초기화  (0) 2021.02.20
댓글
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
최근에 올라온 글
글 보관함
Total
Today
Yesterday