Java System out println
java에서 입력과 출력을 담당하는 System 클래스를 살펴보고 자바 공부하면서 처음 코딩해보는 System.out.println() 문장을 분석해보고자 한다.
모든 것들이 그렇지만 기본이 가장 중요하기 때문에 자바에서 출력과 입력을 담당하는 System 클래스 역시 매우 중요하다. 그렇기 때문에 보안을 위해 이 클래스는 객체 생성도 못하도록 막아놨으며 모든 멤버는 static으로 되어 있어서 클래스 이름으로 접근해서 사용할 수 있도록 하고 있다.
Java API에서 직접 확인해보자.
Java lang 패키지의 System 클래스로 이동한다.
이 글에 사용된 그림들을 보면 확인이 가능하지만 System 클래스의 모든 필드와 메서드는 static이기 때문에 System이라는 클래스 이름으로 접근이 가능하다. 이 static에 관련된 이야기는 해당 단락에서 좀 더 자세히 정리하기로 하고 클래스 이름으로 접근할 수 있다는 정도만 정리하고 넘어간다.
여하튼 System 클래스 안을 보면 PrintStream과 연결되어 콘솔로 출력을 할 수 있는 out과 InputStream과 연결되어 키보드로부터 입력을 받을 수 있는 in, 그리고 역시 PrintStream과 열결 되어 에러 메시지를 콘솔에 출력하는 err 등의 필드가 있는 걸 확인할 수 있다. 이들 역시 모두 static으로 선언되어 있기 때문에 System.in~, System.out~, System.err~ 등 클래스 이름으로 접근할 수 있는 것이다.
메서드 역시 모두 static 인걸 확인할 수 있다.
그럼 이제 out 필드와 연결된 PrintStream으로 이동해서 print()와 println() 메서드를 살펴보도록 하자.
지면의 한계상 모든 메서드를 한 번에 표시할 수 없지만 우리가 아무것도 모르고 입력해봤던 print()와 println() 메서드가 보인다. 이것들은 인자로 전달된 데이터를 콘솔에 출력하는 역할은 같으며 이때 출력할 수 있는 데이터로는 boolean, byte, char, short, int, long, float, double, String 등이다. 물론 출력될 데이터를 직접 전달해도 되지만 이런 자료형으로 선언된 변수나 상수도 넣어서 출력할 수 있다.
그리고 print()는 전달된 인자를 출력하고 커서의 위치는 그 줄에 그대로 위치하도록 하지만 println()은 해당 내용을 출력하고 커서의 위치를 바로 아래 줄로 내리도록 하는 역할을 한다. 마지막으로 몇 가지 자료형과 변수 등을 출력하면서 확인 해보고 마무리하자.
int형 변수 a와 String 변수 b를 각각 선언 및 초기화를 한 후 그 변수를 인자로 전달해서 출력하도록 하고 있으며 직접 200과 문자열을 입력해서 출력하도록 하고 있다. 그리고 홍길동이 출력되는 문장은 그냥 print()만 사용해서 줄의 개행이 이루어지지 않은 걸 확인할 수 있다.
이렇게 해서 java의 기본 출력을 담당하는 녀석들을 살펴봤는데 다음 글에서는 좀 더 다양한 출력 형식을 정리해보도록 한다.