안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
콘솔 창에 내용을 출력하기 위하여 System.out.println( ~ )을 계속해서 사용해왔습니다.
System.out.println(); ?
- jdk에서 제공하는 콘솔 출력 메소드
콘솔 출력 메소드는 3가지의 종류가 있습니다.
① 줄 바꾸며(개행) 출력하기 - System.out.println()
소괄호 안의 내용을 출력하고 자동으로 줄을 바꿉니다.
package kh.java.print;
public class PrintStudy1 {
public static void main(String[] args) {
PrintStudy1 study1 = new PrintStudy1();
study1.test1();
}
public void test1() {
System.out.println("가나다");
System.out.println("라마바사");
}
}
@콘솔출력값
가나다
라마바사
② 개행 없이 출력하기 - System.out.print()
package kh.java.print;
public class PrintStudy1 {
public static void main(String[] args) {
PrintStudy1 study1 = new PrintStudy1();
study1.test1();
}
public void test1() {
System.out.print("가나다");
System.out.print("라마바사");
}
}
@콘솔출력값
가나다라마바사
동일한 코드이지만 출력 값은 완전히 다르게 나온 것을 확인할 수 있습니다.
package kh.java.print;
public class PrintStudy1 {
public static void main(String[] args) {
PrintStudy1 study1 = new PrintStudy1();
study1.test1();
}
public void test1() {
System.out.println("가나다");
System.out.println("라마바사");
System.out.print("아");
System.out.print("자");
System.out.print("차");
}
}
@콘솔출력값
가나다
라마바사
아자차
아무리 print 메소드를 따로따로 적었다고 하더라도, print는 값 출력 후 커서가 개행 되지 않고 출력값 바로 옆에 위치하기 때문에 위처럼 '아자차' 연달아서 나오게 됩니다.
print 메소드를 사용하고 개행을 하고 싶다면..?
\n 개행문자를 사용하면 됩니다.
package kh.java.print;
public class PrintStudy1 {
public static void main(String[] args) {
PrintStudy1 study1 = new PrintStudy1();
study1.test1();
}
public void test1() {
System.out.println("가나다");
System.out.println("라마바사");
// \n 개행문자 사용
System.out.print("아\n");
System.out.print("자\n");
System.out.print("차\n");
}
}
@콘솔출력값
가나다
라마바사
아
자
차
\n 을 여러번 쓰면 사용한 수만큼 개행됩니다.
package kh.java.print;
public class PrintStudy1 {
public static void main(String[] args) {
PrintStudy1 study1 = new PrintStudy1();
study1.test1();
}
public void test1() {
System.out.println("가나다");
System.out.println("라마바사");
// \n 개행문자 사용
System.out.print("아\n\n\n");
System.out.print("자\n");
System.out.print("차\n");
}
}
@콘솔출력값
가나다
라마바사
아
자
차
방금 사용한 \n는 Escape 문자라고 합니다.
※ Escape 문자
- 인쇄할 수 없거나 키보드 출력 불가한 문자를 표현할 때 사용 (\ + 문자)
\n : 개행문자
\t : 탭
\" : 문자 그대로의 " (문자열의 시작/끝을 의미하는 "가 아님)
\\ : 문자 그대로의 \ (Escape 문자의 시작을 의미하는 \가 아님)
public void test2() {
System.out.println("안\t녕\t하\t세\t요");
//System.out.println("안 녕 하 세 요"); 와 동일
System.out.println("그는 말했다. \"잘가\"");
System.out.println("C:\\Workspaces\\java_workspace\\01_HelloWorld");
//System.out.println("C:\Workspaces\java_workspace\01_HelloWorld"); -> Escape \로 인식하여 에러발생
}
@콘솔출력값
안 녕 하 세 요
그는 말했다. "잘가"
C:\Workspaces\java_workspace\01_HelloWorld
③ 형식대로 출력하기 - System.out.printf()
System.out.printf("출력포맷", 인자, 인자 ...) 의 형태
- 출력 포맷을 지정하는 메소드로 " " 안에 출력하고자 하는 형식을 지정합니다.
- %d, %o, %x : 각각 정수로 넘겨받아 10진수, 8진수, 16진수로 출력
- %f : 실수 (소수점 자리수 지정 : %.원하는 자리수f - 반올림 처리)- %b : 논리형- %c : 문자- %s : 문자열
- %n, \n : 개행문자 (printf는 개행처리가 자동으로 안되어서 입력해줘야함)- %% : %를 문자로 표현 (Escaping 처리)
public void test1() {
//10 == 10.0의 결과는 true입니다.
int a = 10;
double b = 10.0;
System.out.printf("%d == %f의 결과는 %b입니다.\n", a, b, a == b); //소수점 자리 지정 X
System.out.printf("%d == %.1f의 결과는 %b입니다.\n", a, b, a == b); //소수점 자리 지정 O
}
@콘솔출력값
10 == 10.000000의 결과는 true입니다.
10 == 10.0의 결과는 true입니다.
double 형의 경우 소수점 자리를 지정해주지 않으면 소수점 6자리까지 자동으로 출력 되기 때문에 소수점 아래 1자리까지만 나오게끔 하기 위하여 %.1f로 소수점 자리를 지정해주었습니다.
public void test1() {
// 'a' == 97의 결과는 true입니다.
char ch = 'a';
int inum = 97;
System.out.printf("'%c' == %d의 결과는 %b입니다.\n", ch, inum, ch == inum);
//println으로 출력시
//System.out.println("'" + ch + "'" + " == " + inum + "의 결과는 " + (ch == inum) + "입니다.");
}
@콘솔출력값
'a' == 97의 결과는 true입니다.
char와 int의 비교도 위와 같이 할 수 있습니다.
println으로 하면 " ~ " + " ~ " 로 묶어줘야하는데, 코드가 훨씬 간결해졌죠?
이 외에도 %에는 너비와 정렬 기능이 있는데요!
코드를 먼저 살펴 보겠습니다.
public void test1() {
//이름 나이 성별
System.out.printf("%s %s %s\n", "이름", "나이", "성별"); //tab 사용
System.out.printf("%10s%10s%10s\n", "이름", "나이", "성별"); //% 사용
System.out.printf("%-10s%10s%10s\n", "이름", "나이", "성별");
}
@콘솔출력값
이름 나이 성별
이름 나이 성별
이름 나이 성별
tab으로 간격을 벌려줘도 되지만 (%원하는 간격너비)로 간격을 원하는 대로 조절해줄 수 있습니다.
너비 : %10s → 10byte 공간의 값을 대입 (우측 정렬)
정렬 : - (flag문자) 추가 시 좌측 정렬
↓ printf 참고자료
'Java > Java' 카테고리의 다른 글
상수 (Constant Variable)란? (0) | 2022.02.25 |
---|---|
변수와 자료형의 종류, 기본 자료형이란? (0) | 2022.02.25 |
임포트(import)란? (0) | 2022.02.25 |
주석, 패키지, 클래스, main메서드란? (0) | 2022.02.24 |
이클립스(Eclipse) 환경 설정 및 클래스 생성 (0) | 2022.02.24 |