티스토리 뷰
📌 형식화 출력 함수 printf( )
println()과 동일하게 출력을 돕는 함수이나, 출력 형식을 지정할 수 있다는 차이점이 있다. 그리고 println()과 달리 개행이 포함되어 있지 않으므로, 개행을 원하는 경우 지시자를 사용해야 한다.
1. 지시자
지시자 | 설명 | 예시 | 출력 결과 |
%b | boolean 형식으로 출력 | System.out.printf( "%b", true); | true |
%d | 10진수의 형식으로 출력 | System.out.printf( "%d", 10); | 10 |
%o | 8진수의 형식으로 출력 |
System.out.printf( "%o", 10); | 12 |
%x, %X | 16진수의 형식으로 출력 | System.out.printf( "%x", 10); | a |
%f | 부동 소수점 형식으로 출력 | System.out.printf( "%f", 0.10 ); | 0.1000000 |
%e, %E | 지수 형태로 출력 | System.out.printf( "%e", 0.10 ); | 1.000000e-01 |
%c | '문자'로 출력 | System.out.printf( "%c", 'A'); | A |
%s | "문자열" 로 출력 | System.out.printf( "%s", "apple"); | apple |
%n, \n |
개행 | System.out.printf( "%n"); |
✔ 문자형 데이터를 정수형으로 출력하고 싶다면, 반드시 형 변환을 해야 지시자로 받아 출력할 수 있다.
✔ 지시자의 % 뒤에 붙이는 숫자나 기호를 사용해 다양한 형태로 출력할 수 있다.
//정수형
System.out.printf( "%5d%n", 1 ); // 1
System.out.printf( "%-5d%n", 1 ); //1
System.out.printf( "%05d%n", 1 ); //00001
//실수형
System.out.printf( "%14.10f%n", 1.123451234512345 ); // 1.1234512345
System.out.printf( "%.10f%n", 1.123451234512345 ); //1.1234512345
System.out.printf( "%.12f%n", 1.123451234512345 ); //1.123451234512
System.out.printf( "%014.10f%n", 1.123451234512345 ); //001.1234512345
//문자열
String str = "Hello World";
System.out.printf( "%s%n", str ); //Hello World 문자열 길이만큼 출력
System.out.printf( "%20s%n", str ); // Hello World 20글자 출력(우측정렬)
System.out.printf( "%-20s%n", str ); //Hello World 20글자 출력(좌측정렬)
System.out.printf( "%.8s%n", str ); //Hello Wo 왼쪽에서 8글자 출력
2. 입력 받기 (Scanner 클래스)
import java.util.Scanner;
✔ 문자열을 입력받기 위해서는 java.util.Scanner를 import 해야 한다.
✔ Scanner의 객체를 생성해 주소를 저장한 참조 변수를 통해 Scanner에 속한 nextLine() 메서드를 사용할 수 있다.
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int n = sc.nextInt();
float f = sc.nextFloat();
✔ 다양한 메서드를 사용해 문자열이 아닌 자료형의 값도 입력받을 수 있지만 사용이 까다롭다.
✔ 차라리 nextLine() 메서드를 사용해 문자열을 입력받아와 적절하게 형 변환을 하여 사용하는 것을 추천.
3. 명시적 형변환
(자료형)피연산자
✔ 정해진 자료형이 아닌 다른 자료형으로 변환하는 것을 형변환(casting)이라고 한다.
✔ 여기에 사용되는 괄호를 캐스트 연산자, 또는 형변환 연산자라고 부른다.
✔ 자료형을 바꾸어주는 메서드를 사용해 형변환을 할 수도 있다.
✔ 이렇듯 사용자가 의도하여 연산자나 메서드를 사용해 형변환하는 경우, 명시적 형변환이라고한다.
✔ 캐스트 연산자를 사용한 형변환은 일시적이기 때문에 피연산자의 자료형에는 영향을 주지 않는다.
✔ 기본 자료형 중 boolean을 제외하면 모든 자료형은 형변환이 가능하다.
✔ 범위가 작은 자료형을 큰 범위의 자료형으로 형변환을 하는데에는 문제가 없다.
✔ 범위가 큰 자료형을 작은 범위의 자료형으로 형변환을 하는 경우 의도하지 않은 결과가 나올 수 있으니 주의하자.
4. 묵시적 형변환
✔ 서로 다른 자료형의 연산을 할 때, 형변환을 하지 않았다면 컴파일러가 생략된 형변환을 자동으로 진행한다.
✔ 이 때, 컴파일러는 기존의 값을 최대한 보존할 수 있는 자료형으로 자동 형변환한다.
✔ 서로 다른 자료형인 경우 보통 표현 범위가 넓은 쪽으로 자동 형변환된다.
✔ 다만 실수형은 정수형보다 값을 더 자세하게 표현하기 때문에, 같은 범위나 크기를 가질지라도 실수형으로 형변환된다.
✔ 만약 어느 쪽으로의 형 변환도 값을 제대로 표현하지 못하고 손실되는 경우 자동 형변환을 수행하지 않는다.
[참고] 자바의 정석
'BackEnd > JAVA' 카테고리의 다른 글
[Ch.03] 2. 단항 연산자 (0) | 2021.02.28 |
---|---|
[Ch.03] 1. 연산자 (0) | 2021.02.28 |
[Ch.02] 상수와 리터럴 (0) | 2021.02.20 |
[Ch.02] 자료형-기본형, 참조형 (0) | 2021.02.20 |
[Ch.02] 변수의 선언과 초기화 (0) | 2021.02.20 |