나블(나누는블로그)

Java의 정석 3rd Edition 남궁 성 지음 2.3(형식화된 출력 - printf()) 본문

자바

Java의 정석 3rd Edition 남궁 성 지음 2.3(형식화된 출력 - printf())

Nable 2025. 1. 6. 13:10

예제2-4/ch2/printfEx1.java

를 직접 타이핑하며 컴파일과 실행을 해 보며 
본인의 이해한 내용과 생각을 추가해 좀더 현실적인 이해와 풀이를 주석으로 달아 놓았다 :)

class Hello 
{
public static void main(String[] args) 
{
//byte,short,char 세가지의 변수타입을 선언초기화함
byte b = 1; //정수형 1byte
short s = 2; //정수형 2byte
char c = 'A'; //문자형 2byte


int finger = 10; //정수형 4byte
long big = 100_000_000_000L; //정수형 8byte
long hex = 0xFFFF_FFFF_FFFF_FFFFL; // 정수형 16진수 8byte

int octNum = 010; // 0을 붙힌 8진수 10, 10진수로는 8
int hexNum = 0x10; // 16진수 10, 10진수로는 16
int binNum = 0b10; // 2진수 10, 10진수로는 2

Systehttp://m.out.printf("b=%d%n", b); //10진 정수 형태로 정수형 byte 변수 b 출력 printf 의 %d를 사용해, 예상 b=1
Systehttp://m.out.printf("s=%d%n", s); //10진 정수 형태로 정수형 short 변수 s 출력 printf 의 %d를 사용해, 예상 s=2 
Systehttp://m.out.printf("c=%c, %d %n", c, (int)c); //첫번째로 %c를 사용해 c를 넣어 문자형으로 출력 두번째로 c언어에서는 char타입의 값ㅇ르 지시자 %d 로 출력할 수 있지만 자바에서는 안되서 int타입으로  %d에 (int)c로 형변환 해 넣어 10진 정수로 출력, 예상 c=A, 65
Systehttp://m.out.printf("finger=[%5d]%n", finger); // 문자열에 대괄호가 들어가고 씌웠고 %d 사이에 5를 넣어 최소 폭을 5로 설정 하여 만약 값이 5보다 짧으면 앞에 공백을 채워서 5자리를 채워서 finger출력, 예상 finger=[     10]
Systehttp://m.out.printf("finger=[%-5d]%n", finger); // %d 사이에 -5를 넣어 최소폭을 5로 설정하고 만약 값의 길이가 5보다 짧으면 뒤에 공백을 추가하여 5자리를 채움 왼쪽 정렬하여 finger를 출력, 예상 finger=[10     ]
Systehttp://m.out.printf("finger=[%05d]%n", finger); // %d 사이에 05를 넣어 최소폭을 5로 설정하고 값의 길이가 5보다 짧을 시 앞에 0을 추가하여 5자리를 채워서 finger를 출력, 예상 finger=[00010]
Systehttp://m.out.printf("big=%d%n", big); // 변수 big을 10진 정수로 출력 예상 big=100000000000
Systehttp://m.out.printf("hex=%#x%n", hex); // 변수 hex를 %x 의 x앞에 #을 붙혀 16진수의 접두사 0x를 붙혀서 16진수 형태로 출력 예상 hex=0xffffffffffffffff 
Systehttp://m.out.printf("octNum=%o, %d%n", octNum, octNum); //변수 octNum을 %o를 사용해 8진수 형태로 한번출력하고 %d 로 10진수 정수로 두번째로 출력함, 예상 octNum=10, 8
Systehttp://m.out.printf("hexNum=%x, %d%n", hexNum, hexNum); //변수 hexNum을 %x를 사용해 16진수 으로 출력하고 10진수로 출력함, 예상 hexNum=10, 16
Systehttp://m.out.printf("binNum=%s, %d%n", Integer.toBinaryString(binNum), binNum); // 10진수를 2진수로 출력해주는 지시자는 없어서 정수를 2진 문자열로 변환해주는 메소드를 사용했기에 지시자 %s를 사용해 2진수를 출력하고 %d를 사용해 10진수로 출력, 예상 binNum=10, 2







}
}