본문 바로가기

JAVA

[Snack Java] 6. 자바의 콘솔 출력(Console Output)

이전 글 보기

2022.06.02 - [JAVA] - [Snack Java] 5. 자바의 연산자(Operators)

 

[Snack Java] 5. 자바의 연산자(Operators)

2022.06.02 - [JAVA] - [Snack Java] 4. 자바의 변수(variable), 상수(constant), 리터럴(literal), 형 변환(type casting) [Snack Java] 4. 자바의 변수(variable), 상수(constant), 리터럴(literal), 형 변환(ty..

yunjuniverse.tistory.com

 

요약

콘솔출력 메서드의 종류

1. 일반 출력: System.out.print(), 소괄호 안의 내용을 '한 줄'로 출력하기만 합니다.

2. 출력 및 줄바꿈: System.out.println(), 소괄호 안의 내용을 메서드마다 줄바꿈하며 출력 합니다. ln은 줄을 뜻하는 line의 약자입니다. 

3. 형식에 맞추어 출력:System.out.printf(), 지시자(specifier, 형식 지정자)를 이용해 매개변수 내 데이터를 여러 형식으로 출력하는 메서드입니다. f는 formatted의 약자입니다.

 

 

객체지향을 위한 자바 언어의 구조와 원칙 이라는 이전 글에서 Hello World를 예제로 객체지향에 대한 원칙을 살펴보았던 것을 알고 계신 분이라면 System.out.println("Hello World")라는 코드를 기억하실겁니다. (사실, 자바를 처음 배우는 분들이 누구나 처음 만나는 코드라 대부분은 익숙 할 것 같습니다.)

 

프로그래밍 언어를 다루다보면 중간 중간 결과물을 확인해야하는 경우가 있습니다. 변수에 데이터가 잘 담겼는지, 구현한 알고리즘에 오류는 없는지 확인하는 용도입니다.

 

콘솔(console)은 우리가 자주 사용하는 IDE(IDE란?)에서 기본적으로 제공하는 요소인데요, 제가 최근 사용하는 IntelliJ라는 툴을 보면

텍스트 에디터 아래에 콘솔창(console)이 위치하고 있습니다.

 

자세히 보이진 않지만 이 코드는 자바의 Hello, world를 출력하는 예제입니다. Text editor에 해당하는 부분에  텍스트를 쓰면 아래의 콘솔창에 Hello, world를 출력할 수 있습니다.

 

콘솔창에 나타난 Hello, world!

 

위와 같이 콘솔창에 명령어를 출력하고 싶을 때 사용하는 메서드가 바로 System.out.print() 메서드입니다. 해당 메서드의 매개변수로 문자열, 숫자 모두 가능하며 매개변수 안에서 연산도 가능합니다. 이 메서드는 3가지로 나뉩니다.

 

1. 일반 출력: System.out.print()

System.out.print() 메서드는 소괄호 안의 내용을 '한 줄'로 출력하기만 합니다.

 

public class HelloWorld {
    public static void main(String[] args) {
        System.out.print("Hello world");
        System.out.print("Yun" + "Juniverse");
        System.out.print(1990+1);
        System.out.print(2022 + "yrs");
    }
}

//출력값: Hello worldYunJuniverse19912022yrs

 

보시다시피 문자열, 문자열 연산, 숫자, 숫자 연산이 콘솔에 잘 출력되고 있습니다. 다만 콘솔에서 각각의 메서드로 호출한 데이터가 줄바꿈 없이 차례로 등장하네요. 보기가 조금 불편합니다.

 

2. 출력 및 줄바꿈: System.out.println()

System.out.println() 메서드는 소괄호 안의 내용을 메서드마다 줄바꿈하며 출력 합니다. ln은 줄을 뜻하는 line의 약자입니다. 

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello world");
        System.out.println("Yun" + "Juniverse");
        System.out.println(1990+1);
        System.out.println(2022 + "yrs");
    }
}

/*
출력값:

Hello world
YunJuniverse
1991
2022yrs

*/

 

위와 동일한 내용의 데이터가 콘솔창에서 줄바꿈하며 출력되는 것을 확인할 수 있습니다.

 

3. 형식에 맞추어 출력: System.out.printf()

System.out.println() 메서드는 지시자(specifier, 형식 지정자)를 이용해 매개변수 내 데이터를 여러 형식으로 출력하는 메서드입니다. 지시자는 이름 그대로 값을 어떤 형식으로 출력할 것인지 지정하기 위해 사용하는 키워드입니다. 여기서 f는 형식을 지정했다는 것을 의미하는 formatted의 약자입니다. 예제를 보면서 지시자를 어떻게 활용하여 출력하는지 확인해보죠

 

public class HelloWorld {
    public static void main(String[] args) {
        int age = 21;
        System.out.printf("제 나이는 %d입니다.", age);
    }
}

 

여기서 보이는 %d가 지시자 중 하나입니다. 그리고 이 메서드는 2개의 매개변수를 가지고 있는데요, 각각

 

("제 나이는 %d입니다", age)

(출력할 내용과 지시자, 지시자의 내용) 

 

순입니다. 여기서는 age라는 변수에 담긴 값을 출력하기 위한 방법으로 사용했습니다.

 

변수에 담긴 값을 자유롭게 담을수 있도록 형식을 지정해주는 유용한 메서드입니다. 만약 2번째 매개변수가 없다면 그냥 System.out.print() 메서드와 같습니다.

 

지시자의 종류를 보고 이를 활용한 예제를 살펴보겠습니다.

 

지시자 출력 포맷
%b Boolean // true, false와 같은 불리언 값을 나타냅니다. (b는 boolean의 약자입니다.)
%d 10진수 //  1~10까지의 10진수를 나타냅니다. (d는 decimal number의 약자입니다.)
%o 8진수 // 1~8까지의 8진수를 나타냅니다.  (o는 octal number의 약자입니다.)
%x, %X 16진수 //  1~16까지의 16진수를 나타냅니다. (x는 hexadecimal number의 약자입니다.)
%c 문자 // 하나의 문자를 나타냅니다. (c는 character의 약자입니다.)
%s 문자열 // 문자열(String)을 나타냅니다.(s는 String의 약자입니다.)
%n 줄바꿈 // 문자를 줄바꿈하여 출력합니다. (n는 new line의 약자입니다.)
public class HelloWorld {
    public static void main(String[] args) {
        int age = 21;
        System.out.printf("%s%n", "Hello, world"); // 문자열을 담고(%s) 줄바꿈을 합니다.(%n)
        System.out.printf("%d%n", 3+6); // 숫자를 담고(%s) 줄바꿈을 합니다.(%n)
        System.out.printf("저는 %s입니다%n", + age + "살"); // 숫자를 담는 (%s)에 맞게 자동 타입 변환이 일어납니다.
        System.out.printf("%c%s%o", '냉', "장고", 10); //여러 개의 인자를 넣은 예제입니다. 숫자는 자동으로 8진수(%o)로 바뀝니다.
    }
}

/*
출력값:

Hello, world
9
저는 21살입니다
냉장고12

*/