형식화된 출력 - printf()
값을 다른 형식으로 출력하고 싶을 때 쓰인다.
printf()는 '지시자(specifier)'를 통해 변수의 값을 여러가지 형식으로 변환하여 출력해주는 기능을 가지고 있다.
지시자 | 설명 |
%b | boolean |
%d | 10진수(decimal) |
%o | 8진수(octal) |
%x, %X | 16진수(hexa-decimal) |
%f | 부동 소수점(floating-point)의 형식으로 출력. 실수형 10진수형태 |
%e, %E | 지수(exponent)형태표현 |
%c | 문자(character) |
%s | 문자열(String) |
%n | 개행. 줄바꿈. |
class PrintfEx1 {
public static void main(String[] args) {
byte b = 1;
short s = 2;
char c = 'A';
int finger = 10;
long big = 100_000_000_000L;
long hex = 0xFFFF_FFFF_FFFF_FFFFL ; // long hex = 0xFFFFFFFFFFFFFFFFL;
int octNum = 010; // 8진수 10, 10진수로는 8
int hexNum = 0x10; // 16진수 10, 10진수로는 16
int binNum = 0b10; // 2진수 10, 10진수로는 2
System.out.printf("b=%d%n", b);
System.out.printf("s=%d%n", s);
System.out.printf("c=%c, %d %n", c, (int)c);
System.out.printf("finger=[%5d]%n", finger);
System.out.printf("finger=[%-5d]%n", finger);
System.out.printf("finger=[%05d]%n", finger);
System.out.printf("big=%d%n", big);
System.out.printf("hex=%#x%n", hex); // '#'은 접두사(16진수 0x, 8진수 0)
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);
}
}
/* 실행결과
b=1
s=2
c=A, 65
finger=[ 10]
finger=[10 ]
finger=[00010]
big=100000000000
hex=0xffffffffffffffff
octNum=10, 8
hexNum=10, 16
binNum=10, 2
*/
지시자앞에 숫자를 통해 출력될 값이 차지할 공간을 지정할 수 있음.
만약 출력자가 공간만큼 안될 시에 빈공간으로 출력하나 앞에 0을 붙여두면 0으로 기본값이 나오고, - 를 붙여두면 왼쪽부터 정렬된다.
그외 예시
더보기
class PrintfEx2 {
public static void main(String[] args) {
String url = "www.codechobo.com";
float f1 = .10f; // 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("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글자만 출력
}
}
/* 결과값
f1=0.100000, 1.000000e-01, 0.100000
f2=10.000000, 1.000000e+01, 10.0000
f3=3140.000000, 3.140000e+03, 3140.00
d=1.234568
d= 1.2345678900
[12345678901234567890]
[www.codechobo.com]
[ www.codechobo.com]
[www.codechobo.com ]
[www.code]
*/
입력값 받기 -Scanner
// 객체 생성
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine(); // 한줄 입력값을 받아옴. enter(개행)치기전까지의 값.
int num = scanner.nextInt(); // 정수 하나를 받아옴.
보다 자세한 내부 로직 및 설명은 추후 강의.
참조
'Java의 정석' 책
'Language > Java' 카테고리의 다른 글
[Java]음수의 2진 표현 - 2의 보수 (0) | 2022.02.27 |
---|---|
[Java] 진법 / 진법 변환(n진수 변환) /실수 진법변환 (0) | 2022.02.25 |
[Java] 기본형(Primitive type) & 상수와 리터럴(constant & literal) (0) | 2022.02.25 |
[Java] 변수(Variable) (0) | 2022.02.25 |
[Java] 자바 프로그램 실행 과정 (0) | 2022.02.24 |
댓글