출력을 하기 위해서는 print()와 println()을 사용할 수 있다.
print() : 줄바꿈을 안함
println() : 출력 후에 줄바꿈을 함
그러나 println()은 변수의 값을 그대로 출력하므로, 값을 변환하지 않고는 다른 형식으로 출력할 수 없다. 다른 형식으로 출력하고 싶을때는 printf()를 사용하면 좋다.
printf()는 지시자(specifier)를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능을 가지고 있다.
printf()
public class PrintfEX {
public static void main(String[] args) {
int year = 2022;
int age = 30;
System.out.printf("age:%d, year:%d", age, year);
}
}
출력지시자 %d를 대입하여 출력한다.
printf()의 지시자
지시자 | 설명 | |
정수 | %b | 불리언(boolean) |
%d | 10진(decimal) | |
%o | 8진(octal) | |
%x, %X | 16진(hexa-decimal) | |
실수 | %f | 부동 소수점(floating-point) |
%e, %E | 지수 표현식(exponent) | |
문자 | %c | 문자(char) |
%s | 문자열(String) |
char의 숫자 변환
public class printEx01 {
public static void main(String[] args) {
byte b = 1;
short s = 2;
char c = 'A';
System.out.printf("b=%d%n", b);
System.out.printf("s=%d%n", s);
System.out.printf("c=%c, %d %n", c, (int)c);
}
}
byte와 short는 정수형타입의 변수이므로 %d 지시자로 문제 없이 출력이 된다. char 역시 문자를 출력하는 %c로 문제 없이 출력이 된다. 이 문자 char를 숫자로 출력을 하게 되면 우선 형변환이 필요하다. (int)c로 형변환을 한 뒤 %d로 출력을 해주면 유니코드에 지정된 숫자 65가 출력 되게 된다.
‘0’과 ‘-’
public class printEx01 {
public static void main(String[] args) {
int finger = 10;
System.out.printf("finger=[%5d]%n", finger);
System.out.printf("finger=[%-5d]%n", finger);
System.out.printf("finger=[%05d]%n", finger);
}
}
‘%x’와 ‘%X’
지시자 %x ㅇ %o에 #을 사용하면 접두사 0x와 0이 각각 붙는다. %X는 16진수에 사용되는 접두사와 영문자를 대문자로 출력한다.
public class printEx01 {
public static void main(String[] args) {
long big = 100_000_000_000L;
long hex = 0xFFFF_FFFF_FFFF_FFFFL;
System.out.printf("big=%d%n", big);
System.out.printf("hex=%x%n", hex);
System.out.printf("hex=%#x%n", hex);
System.out.printf("hex=%#X%n", hex);
}
}
Integer.toBinaryString
10진수를 2진수로 출력해주는 지시자는 없기 때문에 ‘Integer.toBinaryString(int i)’메서드를 사용해주어야 한다. 이 메서드는 정수를 2진수로 변환하여 문자열로 반환한다. 따라서 지시자는 %s를 사용하였다.
자바에서는 반드시 형변환을 해주어야한다.
public class printEx01 {
public static void main(String[] args) {
long big = 100_000_000_000L;
long hex = 0xFFFF_FFFF_FFFF_FFFFL;
System.out.printf("octNum=%o, %d%n", octNum, octNum);
System.out.printf("hexNum=%x, %d%n", hexNum, hexNum);
System.out.printf("binNUM=%s, %d%n", Integer.toBinaryString(binNum), binNum);
}
}
실수형 값 출력
실수형 지시자로는 %f, %e, %g가 있다. 주로 %f가 사용되며, %e는 지수형태로 출력할 때, 간결하게 표현될 때는 %g를 사용한다.
public class printEx02 {
public static void main(String[] args) {
float f1 = .10f;
float f2 = 1e1f;
float f3 = 3.14e3f;
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);
}
}
%f는 7자리에서 반올림 하여 소수점 6자리 까지만 출력한다.
반올림 자리수 지정
public class printEx02 {
public static void main(String[] args) {
double d = 1.23456789;
System.out.printf("d=%f%n", d);
System.out.printf("d=%14.10f%n", d);
}
}
%14.10f 이렇게 표현하면 14개의 자리 중 10개는 소수점 아래 자리로 하겠다는 의미이다. 소수점 역시 자리를 하나 차지하므로 위의 경우에 소숫점 윗자리를 3개가 된다.
소수점 아래의 빈자리는 0으로 채우고 소수점의 윗자리 중에 빈자리가 생긴다면 공백으로 채운다. 만약 소수점 윗자리의 공백 역시 0으로 채우고 싶다면 %014.10f로 지정하면 된다.
출력공간 확보
public class printEx02 {
public static void main(String[] args) {
String url = "<https://jjh93.com>";
System.out.printf("[%s]%n", url);
System.out.printf("[%20s]%n", url);
System.out.printf("[%-20s]%n", url);
System.out.printf("[%.8s]%n", url);
}
}
[%s] //문자열의 길이만큼 출력공간을 확보
[%20s] //최소 20글자 출력공간 확보 후, 우측정렬
[%-20s] //최소 20글자 출력공간 확보 후, 좌측정렬
[%.8s] //왼쪽에서 8글자만 출력
'JAVA > 개념정리' 카테고리의 다른 글
[JAVA] IF문의 활용 (2) | 2022.09.16 |
---|---|
[JAVA] 연산자(operator) (0) | 2022.09.16 |
[JAVA] 변수의 자료형 (0) | 2022.09.15 |
이클립스(Eclipse) 설치, 단축키 (0) | 2022.07.27 |
[JAVA] Java11 설치 (0) | 2022.07.27 |
댓글