자바에서 데이터를 출력하는 방법을 알아보도록 하겠습니다.
C언어같은 경우에는 처음 배울 때 printf 라는 함수를 이용하여 데이터를 출력했습니다.
자바에서도 데이터를 출력하는 메소드(함수와 비슷한 개념)를 사용하여 데이터를 출력할 수 있습니다.
아래 소스코드를 보며 확인해봅시다.
System.out.print()
System.out.println()
System.out.printf()
위의 3가지 메소드가 대표적인 표준 출력 메소드입니다.
print() 메소드는 전달받은 데이터를 출력만 합니다.
println() 메소드는 출력하고 자동 개행을 합니다.
(개행이란 엔터키, 즉 한칸 아래로 내리는것을 뜻함)
printf() 메소드는 C언어와 같습니다.
서식문자를 사용하여 데이터를 원하는 형태로 출력이 가능합니다.
서식문자는 여러가지가 있지만 대표적으로 사용하는 서식문자 몇가지만
아래 표에서 간단히 확인하시길 바랍니다.
서식문자 |
데이터 형태 |
사용 예 |
%d |
정수 |
printf("%d", 100); |
%f |
실수 |
printf("%f", 0.53); |
%c |
문자 |
printf("%c", 'A'); |
%s |
문자열 |
printf("%s", "Hello"); |
여러 서식문자와 문자열을 중복하여 사용할 수 있습니다.
printf("%d / %d = %.2f 입니다.", 43, 6, (float)43/6);
결과 => 43 / 6 = 7.17 입니다.
%f를 %.2f 와 같이 변형하여 사용할 수 있습니다.
(소숫점 아래 2자리까지 출력한다는 의미)
print나 println 메소드도 중복하여 사용이 가능하지만 + 문자를 이용해서 작성해야하는 번거로움이 있습니다.
또한 %.2f 와 같이 변형된 서식을 사용할 수 없습니다.
println(43 + " / " + 6 + " = " + (float)43/6);
아래 스크린샷은
위의 이미지에 있는 소스코드를 실행한 결과입니다.
이처럼 콘솔에 출력하는 메소드 3가지를 간단히 알아보았습니다.
[심화학습]
System.out.메소드이름
C언어는 printf() 만 가져와서 쓰면 되는데 왜 자바는 System.out. 을 붙여야할까요?
쓸데없이 길고 복잡해보이기까지 합니다.
자바는 객체지향 언어입니다.
자바에는 상속이라는 개념이 있습니다.
자식이 부모의 자산을 물려받듯이 자바도 부모의 메소드, 멤버변수등을 상속받을 수 있습니다.
여기서 부모는 슈퍼클래스(Super Class)
자식은 서브클래스(Sub Class)
라고 부르기도합니다.
말만 어렵지 상속을 받는 클래스가 서브클래스,
상속을 당하는 클래스가 슈퍼클래스입니다.
상속에 대한 내용은 간단히 여기까지하고 다음에 자세히 설명하도록 하겠습니다.
자바의 최상위클래스는 "Object" 클래스입니다.
class MyClass { }
우리가 이렇게 클래스를 만들어서 사용했지만 자동으로 Object 클래스를 상속합니다.
( class MyClass extends Object { } )
System.out. ~~
의 의미는
System클래스 내부의 out이라는 이름으로 선언된 PrintStream 에게 접근한다는 뜻입니다.
[자바 표준 API 문서확인하기]
http://docs.oracle.com/javase/8/docs/api/index.html
스크린샷을 확인해보면 상단에 Object 클래스를 상속받은 System 클래스가 있습니다.
System 클래스는 static(전역) 으로 선언된 out 이라는 PrintStream 객체가 있습니다.
PrintStream클래스를 살펴보면 이 안에 print, println, printf 메소드가 있습니다.
복잡하게 상속되어있는것같지만 이는 매우 객체지향적으로 설계되어있습니다.
우리가 System.out.print() 를 작성하여 호출하면
System클래스의 out이라는 PrintStream으로 접근하여 그 내부에 있는 print 메소드를 호출하는것입니다.
처음 접하시는분이라면 많이 어려울텐데 이해하려고 하지않으셔도 됩니다.
후에 자바를 더 배우고나서 정독하시면 분명히 이해하실 수 있을겁니다.
감사합니다.