본문 바로가기

LECTURE/# java basic

[초급 JAVA]자바 기본 입 출력 - System 클래스

반응형

자바 기본 입 출력

Intro

오늘은 자바의 기본적입 입출력에대해 포스팅 하고자합니다. 저번에 [초급 JAVA] Hello JAVA 출력하기 띄우기 포스팅에서 언급된 System.out.println 에대해 더 자세히 설명하는 시간입니다. 저번에는 JAVA언어를 포스팅하기 전에 간단히 인사만 하는 정도 였으니 이번에는 JAVA언어를 통해 원하는 것을 출력하고 입력하는 방법에대해 몇단계에 걸쳐 포스팅 하도록하겠습니다.

Explanation

일단 JAVA에서는 SYSTEM 클래스를 통해 기본적인 스크린과 키보드를 통한 입출력 방법을 제시합니다. 이것을 표준 입출력 이라고 하는데요. System 클래스 안에는 in, out , err 과같은 멤버 변수 가 있습니다. 순서대로 입력,출력,에러를 뜻합니다.

in

입력을 할때 사용 합니다. 접근 할때는 전에 설명 드렸다 시피 접근자 마침표 (  . ) 를 사용합니다. 
1
System.in
cs

 


아직 추상클래스에대해 설명 드린바가 없지만, 약간 설명을 덧 붙이자면 System.in 의 변수타입이 InputStream인데요, 여기서 InputStream이 추상클래스입니다. 추상클래스는 객체를 생성할 수 없지만 형변환을 통하여 객체를 생성했다, 라고 생각하시면 됩니다. 좀더 자세한 설명은 뒤에 고급에서 다루기로하고, 일단은 초급을 대상으로 포스팅하고있기때문에 무엇인가를 키보드를 통해 입력하려고 할때 사용되는 것이 바로  'System.in'이다. 까지 설명하고 넘어가겠습니다. 또한 관련메소드도 내용이 길어서 다음 포스팅에 단독으로 다룰 예정입니다.


out

대표적인 출력 스트림입니다. 저번 포스팅에서도 사용되었었죠?
1
System.out
cs

 

out도 역시 마찬가지로 OutputStream 클래스의 객체이지만 , 추상클래스는 객체가 될수 없기때문에 PrintStream 이라는 후손 클래스를 이용하여 객체를 생성하고 그것을 우리가 쓰는 겁니다.

out을 통해 여러가지 메소드들을 사용할 수있는데요. 저는 여기서 몇가지만 가지고 실습을 해보겠습니다.

 

1
2
3
4
5
public class Exam_01{
    public static void main(String[] ar){
    System.out.write(65);
    }
}
cs

write() 라는 메소드는 byte를 출력하거나, 아스키 코드 등을 출력할때 쓰입니다. 저는 write() 에 integer 값을 넣어서 사용해보겠습니다.다. 여기서 integer 값은 아스키 코드값입니다. (아스키 코드 65 는 알파벳 'A'를 뜻합니다.) Exam_01이라는 클래스 파일을 생성하고, 위 소스를 입력 해 보세요. 직접 써야 실력이 늘어요~

아무것도 출력이 되지 않는다구요? 그러면 잘 된겁니다. 저번에 썼던 prlntln() 이나 print() 같은 메소드는 안에 화면에 나타나게끔 처리까지 된 메소드지만 나머지 대부분의 출력 관련 메소드는 그런것까지 처리하지않았습니다. 그래서 직접 화면에 출력하게끔 해줘야하는데요. 현재 데이터는 자바 버퍼 안에 데이터로 저장 되어있는 상태이므로 밑에 소스처럼 System.out.flush();를 더 써줍시다.

 

1
2
3
4
5
6
public class Exam_01{
    public static void main(String[] ar){
    System.out.write(65);
    System.out.flush();
    }
}
cs

이제 Console창에 문자 A 가 출력되지요? 

다음은 println 과 print의 차이점에대해 간단히 설명하고 넘어가자면, print는 말 그대로 화면에 있는 그대로 출력 하라 라는 의미이고 println 은 print + line 의 합성어로 출력하면서 한줄 개행 하라 라는 의미입니다. 

 

1
2
3
4
5
6
public class Exam_01{
    public static void main(String[] ar){
    System.out.println("안녕"+2+"하세요"+55+"commin입니다.");
    System.out.println(1+2+2+"안녕"+2+"하세요"+55+"commin입니다.");
    }
}
cs

더하기 + 는 앞에와 뒤를 더한다는 의미입니다. 큰 따옴표는 문자열을 뜻하며 숫자는 말 그대로 숫자를 뜻하죠. 1+1 = 2 입니다. 그러면 "A"+"B" 는 무엇일까요? 그렇습니다. "AB"입니다. 그렇다면 "A"+1 은 무엇일까요? 그렇습니다. "A1"입니다. 문자와 문자, 문자와 숫자 를 더하면 답은 모두 앞에와 뒤가 합쳐진 문자열이 됩니다. 그러나 사칙연산에는 순서가 있는거 다 아시죠? 더하기는 앞에서부터 뒤로 순서대로 연산 되므로 "12안녕하세요"의 결과를 바라고 코딩할 때  print(1+2+"안녕하세요"); 과같은 방식으로 한다면 결과는 3안녕하세요 가 되겠죠? 이럴땐 print(1+""+2+"안녕하세요") 와 같으 중간에 아무것도 쓰지않은 "" 를 더한것만으로도 문자열로 취급되어 12안녕하세요 가 출력됩니다. 이런식의 코딩방법은 여러가지가 있느니 하면서 연구해보세요^^ 


다음은 printf 에대해서 설명하겠습니다. printf 는 C언어를 배우고 오신 분들은 많이 익숙 하시겠지요?  JAVA언어를 만든 두 천재가 print 와 println과같은 편리하고 좋은 메소들 만들어 사용하게끔 했지만 , C언어 프로그래머들이 그래도 printf 같은 좋은 메소드를 살리는게 어떻겠느냐 라는 의견을 받아들여 C언어의 메소드를 그대로 가져온것입니다. (믿거나말거나) 

1
2
3
4
5
public class Exam_02{
    public static void main(String[] ar){
    System.out.printf("문자: %c 정수 : %d  실수 : %f",'A',123,5.222);
    }
}
cs

 

간략히 설명 드리자면 %c 는 문자 한개, %d 는 정수, %f 는 실수를 나타내고 "" 다음에 콤마를 찍고 순서대로 값을 입력하면 그자리에 치환되어 들어가는 것입니다. 위에 소스를 출력하면 문자: A 정수 : 123 실수 5.222 가 출력되겠죠? 

좀더 자세히 pritnf 메소드를 사용하고 싶으시다면 링크 <-로 가서 보세요~ printf에 쓰임에 대해 되게 많이 정리해 놓으셨더라구요 ^^

err

out과 비슷 합니다. 표시 개념이 다르다고 볼 수 있는데요. 에러가 발생했을때 알려줘야 할 내용을 표시하고자 한다면 System.err 을 쓰면 되고 일반적인 데이터를 출력하고자한다면 System.out을 쓰면되는거지요. eclipse는 err로 출력되는 데이터를 빨간색으로 표시해줍니다. 다음을 실습 해보세요. 

 

1
2
System.out.println("안녕하세요");
System.err.println("err_line 9");
cs


closing

이번 포스팅에서는 그냥 화면에 글자를 마음대로 출력 할 수 있다. 까지만 연습하시고 이해하시면됩니다. 다음 포스팅에서 입력에 관한 포스팅을 하면서 모자란 부분 더 채워나가도록 해보아요.^^


반응형