자바스크립트에서는 console.log() 로 출력결과를 보고
Java에서는 System.out.print() 를 통해 출력 결과를 볼 수 있습니다.
우선, print와 println은 간단합니다.
다음 코드를 통해 쉽게 이해할 수 있습니다.
print는 한줄로 결과를 출력합니다.
System.out.print("자바의");
System.out.print(" 정석");
System.out.print(" 정독하기");
println
println은 각 결과를 줄 바꿈을 통해 출력합니다.
System.out.println("자바의");
System.out.println(" 정석");
System.out.println(" 정독하기");
printf - 형식화된 출력
보통 출력의 결과를 보고 싶을 때, print나 println을 주로 사용하는데 이 방식은 변수의 값이 정해진 그대로 출력합니다.
하지만 출력할때 값 또는 형식을 바꾸어 출력하고 싶을 수도 있습니다.
이때, printf 를 사용합니다.
printf()의 지시자
지시자 | 설명 |
%b | boolean 형식으로 출력 |
%d | 10진 ( decimal ) 정수의 형식으로 출력 |
%o | 8진 ( octal ) 정수의 형식으로 출력 |
%x, %X | 16진 ( hexa-dcimal ) 정수의 형식으로 출력 |
%f | 부동 소수점 ( floating-point )의 형식으로 출력 |
%e, %E | 지수 ( exponent ) 표현식의 형식으로 출력 |
%c | 문자 ( character )로 출력 |
%s | 문자열 ( string )로 출력 |
printf의 형식은 다음과 같습니다.
System.out.printf("변수=지시자", 변수)
위 지시자를 통해 어떻게 출력 결과를 변환하는지 다음 예제를 통해 알아봅시다.
예제 1
public class PrintfEX1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
byte b = 1;
short s = 2;
char c = 'A';
int i = 13;
String str = "안녕하세요";
long big = 100_000_000L; // 100000000 ( _ : 천의자리 구분 )
long hex = 0xFFFF_FFFF_FFFFL; // FFFFFFFFFFFF
int octNum = 010; // 8진수 : 10 ( 접두사 : 0 ), 10진수 : 8
int hexNum = 0x10; // 16진수 : 10 ( 접두사 : 0x ), 10진수 : 16
int binNum = 0b10; // 2진수 : 10 ( 접두사 : 0b ), 10진수 2
float f1 = .10f; // ( f : float 접미사 ) 0.10 , 1.0e-1
float f2 = 1e1f; // 10.0, 1.0e1, 1.0e+1
float f3 = 3.14e3f;
double d = 1.23456789;
System.out.printf("b=%d%n", b);
System.out.printf("s=%d%n", s);
System.out.printf("c=%c%n", c);
System.out.printf("c=%c, %d%n", c, (int)c);
System.out.printf("i=%d%n", i);
System.out.printf("big=%d%n", big);
System.out.printf("hex=%x%n", hex);
System.out.printf("hex=%#x%n", hex); // #을 붙이면 접두사도 포함시킴
System.out.printf("octNum=%o, %d%n", octNum, octNum); // 8진수, 10진수
System.out.printf("hexNum=%x, %d%n", hexNum, hexNum); // 16진수, 10진수
System.out.printf("binNum=%b, %d%n", binNum, binNum); // boolean, 10진수
System.out.printf("binNum=%s, %d%n", Integer.toBinaryString(binNum), binNum); // boolean, 10진수
System.out.printf("f1=%f1, %e, %g%n", f1, f1, f1); // %e는 지수형태, %g는 값을 간략하게 표현
System.out.printf("f2=%f2, %e, %g%n", f2, f2, f2);
System.out.printf("f3=%f3, %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("d=%014.10f%n", d); // 전체 14자리 중 소수점 10자리
}
}
- 변수 c
위 예시 중에서 c 변수를 보면 문자와 숫자 둘 다 출력하였습니다.
C언어에서는 형변환 없이 출력하는게 허용되지만, 자바에서는 허용되지 않기에
문자 변수 c를 %d 지시자로 10진수 정수로 변환하기 위해선 (int) c 로 형변환이 꼭 필요합니다.
- 변수 binNum
2진수로 출력해주는 지시자가 없기 때문에 정수를 2진 문자열로 변환해주는 Integer.toBinaryString(int) 메서드를 사용해야합니다.
이 메서드는 정수를 2진수로 변환해서 문자열로 반환하기 때문에, 지시자 %s를 사용했습니다.
- 변수 f1, f2, f3 와 변수 d
실수형 값의 출력에 사용되는 지시자는 %f, %e, %g가 있습니다. 이 중 %f가 주로 사용되고,
%e는 지수형태로 출력할때, %g는 값을 간략하게 표현할때 사용합니다.
%f 지시자는 기본적으로 소수점 아래 6자리 까지만 출력하기 때문에 소수점 아래 7자리에서 반올림합니다.
d 변수를 보면 1.23456789 는 소숫점 아래로 6자리가 넘어가기 때문에 소수점 아래 7번째 자리인 8에서 반올림해 1.234568이 출력되었습니다.
d=%14.10f 는 %전체자리수.소수점아래자리f 로, 전체 14자리 중 소수점 아래 10자리를 뜻합니다. ( 앞은 공백, 뒤는 0을 추가)
그래서 1.2345678900 의 앞이 공백으로 출력되고 뒤의 00은 소숫점 아래를 10자리로 맞추기 위해 추가되었습니다.
d=%014.10 지정하면 양쪽 빈자리를 모두 0으로 채워 , d=%14.10f 일 때 앞의 공백이였던 2자리가 00으로 채워져 001.2345678900 이 출력되었습니다.
예제2
아래 예제처럼 글자수의 크기를 정하여 출력할 수 있습니다.
public class PrintfEX2 {
public static void main(String[] args) {
int i = 10;
String url = "www.hstory0208.com";
System.out.printf("i=[%5d]%n", i); // 5글자의 출력공간 확보 (양수는 오른쪽 정렬 )
System.out.printf("i=[%10d]%n", i); // 10글자의 출력공간 확보 (양수는 오른쪽 정렬 )
System.out.printf("i=[%50d]%n", i); // 50글자의 출력공간 확보 (양수는 오른쪽 정렬 )
System.out.printf("i=[%-5d]%n", i); // 5글자의 출력공간 확보 (음수는 왼쪽 정렬 )
System.out.printf("i=[%05d]%n", i); // 5글자를 확보하고 공백에 0을 채움
System.out.printf("[12345678901234567890]%n");
System.out.printf("[%s]%n", url); // 문자열의 길이만큼 출력공간 확보
System.out.printf("[%20s]%n", url); // 문자열의 길이 : 20만큼 출력공간 확보 ( 양수는 오른쪽 정렬 )
System.out.printf("[%30s]%n", url); // 문자열의 길이 : 30만큼 출력공간 확보 ( 양수는 오른쪽 정렬 )
System.out.printf("[%-20s]%n", url); // 문자열의 길이 : 20만큼 출력공간 확보 ( 음수는 왼쪽 정렬 )
System.out.printf("[%-30s]%n", url); // 문자열의 길이 : 30만큼 출력공간 확보 ( 음수는 왼족 정렬 )
System.out.printf("[%.8s]%n", url); // 왼족에서 8글자만 출력
}
}
'◼ JAVA' 카테고리의 다른 글
(Java/자바) 숫자를 문자열로 변환 - toString(), valueOf() (0) | 2022.10.12 |
---|---|
(Java/자바) 문자열을 정수로 변환 - parseInt(), valueOf() (0) | 2022.10.12 |
Java - 특수 문자 다루기 (0) | 2022.10.11 |
Java - 상수와 리터럴 ( constant 와 literal ) 이란? (0) | 2022.10.07 |
Java - 변수의 타입 (기본형과 참조형) (0) | 2022.10.07 |