println = 있는 그대로의 값을 출력
printf = 지시자(specifier)를 사용하여 다른 여러가지의 형식으로 값을 바꾸지 않고 출력할 수 있다.
지시자
%b = booleam
%d = 10진 정수
%o = 8진 정수
%x , %X = 16진 정수
%f = floating-point
%e , %E = 지수 표현식의 형식
%c = 문자 (char)
%s = 문자열 (string)
%20s = 숫자가 우측으로 정렬된다
%-15s = 숫자가 좌측으로 정렬된다
%.8s = 숫자 왼쪽으로만 8칸 생성
10진수를 2진수로 변환해주는 지시자는 없기때문에 정수를 2진 문자열로 변환해주는 명령어를 사용해야 한다.
2진수 = 0B ,0b / 8진수 = 0 / 16진수 0X , 0x 를 접두사로 붙여 진수를 구분한다.
%x, %X 로 출력을 할때 '%'와 'x' 사이에 '#'을 넣게 되면 16진수로 출력될때 접두사로 0x, 0X가 붙게 된다 이때 대문자는 16진수의 영어까지 대문자로 출력하게 한다.
int binnum = 0b10 ; // 'b'inary
int octnum = 010 ; // 'o'ctal
int hexnum = 0x10 ; // he'x'a-decimal
System.out.printf(%s %d, Integer.toBinaryString(binnum),binnum);
%s 로 받는 이유는 10진수를 2진수로 바꾸로 문자열로 반환하기 때문이다.
char e = 'A';
System.out.printf("e = %d ", (int)e );
[%5d] = 정수를 자리수를 5자리까지 만든다. (숫자 앞에 빈칸이 생김)
[%05d] = 5자리로 만들고 빈칸을 0으로 채운다.
[%-4d] = 4자리로 만들지만 입력된 숫자 뒤로 빈칸이 생기게 된다.
" %전체자리.소수점아래자리f " 이렇게 입력하게 되면 소수점의 앞뒤를 사용자가 원하는 만큼 출력할 수 있게 된다.
float f = 15.735;
System.out.printf("%11.4f" , f );
자리수 : 1 2 3 4 5 6 7 8 9 10 11
출력값 : 1 5 . 7 3 5 0 0 0 0
//%010.30f으로 표기하면 출력값의 앞자리에는 공백이 아니라 0으로 표기되게 된다
import java.util.*; // Scanner를 사용하기 위해 class이전에 선언
1. import java.util.*;
2. class Main {
3. public static void main(String[] args) {
4. Scanner scanner = new Scanner(System.in); //새로운 객체 생성
5.
6. System.out.println("숫자 한개를 입력하시오 :");
7. String input = scanner.nextLine(); //문자열을 받음
8. int num = Integer.parseInt(input); //받은 문자열을 정수로 변환
9.
10. System.out.println("입력내용 : "+input);
11. } //nextLine 이외에 nextInt , nextFloat등을 사용하면
12. } //8번째줄을 사용하지 않고 바로 원하는 타입으로 받을 수 있다.