오늘의 목표
1. printf를 이용한 출력
2. printf를 이용한 출력 예제
지금까지 println()를 사용하기 편했지만 변수의 값을 그대로 출력하므로,
값을 변환하지 않고는 다른 형식으로 출력할 수 없다. 같은 값라도 다른형식으로
출력하고 싶을 때, ex)소수점 둘째자리까지만,정수를 16진수,8진수로 출력하고 싶을때
printf()를 사용하면 된다.
printf()는 '지시자'를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능이 있다.
'지시자'는 값을 어떻게 출력할 것인지를 지시해주는 역할을 한다.
'지시자'마다 형식이 변환되며 다음을 코드로 가볍게 보자면 다음과 같다.
System.out.print("age:%d", age);
System.out.print("age:%d", 14);
System.out.rpint("age:14"); // "age:14"의 값이 화면에 출력된다.
만에하나 출력하는 값이 2개라면 , 지시자도 2개를 사용해야 하며 출력될 값과 지시자의 순서는 일치해야한다. 물론 3개의 이상의 값도 지시자를 지정해서 출력할 수 있다.
딱히 갯수 제한은 없다.
System.out.print("age:%d year:%d" , age , year);
System.out.print("age:%d year:%d" , 24 , 2022);
// "age:24 year:2022"이 화면에 출력된다.
지시자 | 설명 |
---|---|
%d | 10진(decimal) 정수의 형식으로 출력 |
%x | 16진(hexa-decimal)의 정수의 형식으로 출력 |
%f , %e | 부동 소수점 (floating-point)의 형식으로 출력 |
%c | 문자 (character)로 출력 |
%s | 문자열 (String)로 출력 |
위에 두개는 정수, 가운데는 실수 , 밑에 2개는 문자 이다.
class Ex_9 {
public void main(String[] args){
String -url = "www.codechobo.com";
float f1 = .10f;
float f2 = 1e1f;
float f3 = 3.14ef;
double d = 1.23456789;
System.out.printf("f1=%f, %e , %g%n , f1 , f1, f1);
System.out.printf("f2=%f , %e , %g%n , f2 , f2 ,f2);
System.out.printf("f3=%f , %e , %g%n , f3 , f3 ,f3);
System.out.printf("d=%f%n", d);
System.out.printf("d=%14.10f%n",d); //전체 14자리 중 소수점 10자리
System.out.printf("[12345678901234567890]%n");
System.out.printf([%s]%n , url);
System.out.printf([%20s]%n , url);
System.out.printf([%-20s]%n , url); //왼쪽 정렬
System.out.printf([%.8s]%n , url); //왼족에서 8글자만 출력
}
}
실수형 값의 출력에 사용되는 지시자는 %f, %e , %g가 있는데
주로 %f 가 주로 쓰이고 '%e'는 지수형태로 출력할 때
'%g'는 값을 간략하게 표한할 때 사용한다.
그리고 다음과 같이 전체 자리수와 소수점 아래의 자리수를 지정할 수도 있다.