반응형
자바 기본 입 출력 - System 클래스 / System.in.read();
By Commin .September 12, 2016
Intro
드디어 자바 포스팅을 쓰게되네요. 많이준비해 놓은만큼 빠르게 쓰도록하겠습니다. 그리고 제가 포스팅할때 사용 한 모든 java클래스들은 github에 저장해놓을테니 필요하신분들은 그곳에서 퍼가세요. ^^
Programming
ExamIn.java
System.in.read();
기본적으로 아스키 코드값이 입력됩니다. 키보드의 모든 자판에는 아스키코드가 지정되어있습니다.
|
표를 보시면 아시겠지만 대문자 'A'를 입력하게되면 아스키코드값 65가 return되어서 출력됩니다. 주석에서 설명하였지만, 아스키코드값으로 13번은 CR로 정의되어있죠? 이건 Enter를 정의한겁니다. 10번은 개행에대한 아스키코드값이고요.
System.in.read()-48 or '0'
모두 이해하셨겠지만, 다시한번 간단히 설명드리자면 숫자 하나를 입력받아 그대로 출력하고자 할 때, 저런방식으로도 씁니다.(아주잘 안씁니다.^^) 코드표를 보시고 숫자 0을 찾아봅시다. 아스키값이 48입니다. 그리고 1씩 증가할때 아스키값도 1씩증가하므로 48을 빼주면 원하는 값이 남는 것을 알 수있습니다. 예를 들면 숫자 5는 아스키값이 53이고, 여기에 48을 빼면 5가남죠? 문자 '0'도 아스키값이 48이므로 48을 빼라는 뜻입니다.
(char)System.in.read()
받은 문자 그대로를 표시하고싶으면 문자를 가지는 자료형 char 로 형변환을 해주면됩니다. 표를 보시면 아시겠지만, 아스키 코드가 0~127 까지 있으므로 char의 범위안에 모두가 포함되겠죠? 그말은 모든 아스키코드는 char에 담을 수도 있고 데이터의 손실또한 없다는 겁니다. 숫자 65를 char로 형변환 해보세요. 대문자 A가 나옵니다. 이렇게 1:1로 대칭되게 바뀌게되므로 아스키코드값을 그대로받아서 char로 형변환 하면 문자 하나를 입력받아 그대로 출력 할 수 있습니다.
이번에는 ExamIn2.java에서 문자열을 받아서 출력하는 예제로 설명하겠습니다.
System.in.read(byte [])
키보드로 입력을 하면 문자 하나당 byte값이 지정되어있습니다. 문자가 여러개라면 바이트도 여러개를 받아서 저장해야하니, 빈 배열을 인수로 받아 System.in.read(byte [])에서 배열에 저장시켜줍니다. 속이 빈 byte[]을 크기가 10으로 정의하여 초기화하고 이걸 인수로 넣고 console창에서 문자열을 입력해보세요. (이 때 문자는 10개까지만 되겠죠?) new String(byte [])은 byte[]을 문자로 바꾸어 리턴해줍니다. 이걸 그대로 출력해도 좋습니다. 그럼 입력한 문자열이 그대로 출력이 되는걸 볼 수 있습니다.
BufferedReader in =new BufferedReader(new InputstreamReader(System.in));
BufferedReader는 아직 그 원리나 쓰임새에대해 자세히 몰라도됩니다. 그냥 공식처럼 외우세요. BufferedReader를 사용하면 문자열을 byte [] 이라든가 new String()이라던가 그런걸 안써도 그대로 문자열을 저장 할 수있습니다. 편의를 제공하기위하여 만든 Class입니다. 이밖에도 Scanner 클래스도 있지만 이건 utill 패키지안에 있기때문에 , System을 공부하는 지금 등장하는건 시기상조라고 판단했습니다. ^^; 저도 처음 배울때 BufferedReader를 사용하여 했고 지금도 많이쓰는(지금은 다른용도로쓰지만요 )거니 지금 외우신다고 손해보는건 없습니다. 다만 간단한 입력은 Scanner가 많이 쉽고 좋지만요. 길어도 BufferedReader를 쓰도록합시다. 당분간!
BufferedReader로 생성한 객체 in 으로 readLine() 메소드를 호출하면 입력을 완료할때까지 대기하다 엔터키를 누르고 완료하게되면 입력받은 내용을 알아서 문자열로 바꾸어 return해줍니다. BufferedReader를 사용하면 좀더 빠르게 코딩 할 수 있겠죠?
Closing
소스는 모두 올려놓았습니다. github 링크는 나중에 좀더 자료가 많아지면 수정해서 올려놓도록하겠습니다. 일단 copy&paste를 해서 결과를 눈으로 확인하시고 설명을 보면서 직접 코딩을 해보세요. 대부분의 설명은 소스안에 주석에 써놓았으니, 주석을 참고하여 설명을 봐주세요.
- Commin's JAVA BASIC Category
- 자바 이클립스 설치 및 환경변수 설정
- 자바 문법의 개념 및 용어
- 자바 기본 입출력
- 자바 제어문
- 자바 메서드 및 배열
- 자바 클래스
- [초급 JAVA]자바 class의 기본개념/객체(Object) 와 클래스 - 1
- [초급 JAVA]자바 class의 기본개념/객체(Object) 와 클래스 - 2
- [초급 JAVA]자바 생성자로 초기화 하고 코딩하기/JAVA Constructor
- [초급 JAVA]자바 this,static,final 지정예약어 - final
- [초급 JAVA]자바 this,static,final 지정예약어 - this & this()
- [초급 JAVA]자바 this,static,final 지정예약어 - static
- [초급 JAVA]자바 상속(extends) 예제로 이해하기/ super & super() 이해하기
- [초급 JAVA]자바 interface 와 abstract 예제로 이해하기
반응형
'LECTURE > # java basic' 카테고리의 다른 글
[초급 JAVA]자바 제어문 - switch ~ case ~ break 제어문 (0) | 2016.09.21 |
---|---|
[초급 JAVA]자바 제어문 - if 제어문 (0) | 2016.09.17 |
[초급 JAVA]자바 기본 입 출력 - System 클래스 (1) | 2016.08.23 |
[초급 JAVA]기본 문법 및 형변환 (1) | 2016.08.21 |
[초급 JAVA]자바 문법 및 자료형 - 2 (3) | 2016.08.21 |