죄송한데 질문하나 드릴께요...
2009-09-21
|
by 안녕하세요
1770
public class Test{
public static void main(String[] args) throws Exception {
int data=0; //키보드에서 입력받은 데이터를 저장할 변수
System.out.println("문자를 입력하세요. 끝내려면 [Ctrl]+Z를 누르세요.");
data = System.in.read(); //System.in : 키보드와 연결되어 있는 통로 ------> 1)
while(data != -1){ //더 이상 읽을 값이 없으면([Ctrl]+Z를 누르면) -1를 리턴
System.out.print((char)data); //입력받은 값을 출력 System.out : 모니터와 연결되어 있는 통로 --------------> 2)
data = System.in.read(); //System.in : 키보드와 연결되어 있는 통로
}//while
}//main
}
[실행결과]
문자를 입력하세요. 끝내려면 [Ctrl]+Z를 누르세요.
abcdefg
abcdefg
Java
Java
^Z
=================================================================================================
아무 생각없이 봤을때 참 쉬운 예문이구나...했는데 조금 생각해보니 너무 어려워졌습니다.
답변 부탁드립니다.
1)에서요 data = System.in.read(); 여기서 in은 InputStream의 멤버 변수이고 read()는 InputStream의 메소드로서
한바이트를 읽어 들이는걸로 알고 있는데요.
실행결과를 보면 data에 한바이트가 아니라 입력한 모든 글자가 들어가는거 같습니다.
이게 어떻게 된거죠?
read();메소드를 반복문을 돌린것도 아니고 딱한번 실행했는데 여러문자를 한번에 저장하였는데,read()메소드는 분명
한바이트만 읽어들이는거 아닌가요?
2)에서요. System.out.print((char)data);
data를 한번에 찍어내는거 같은데요. char는 한문자, 한글자만 가능한걸로 알고 있는데...
(char)data 이게 가능한건가요?
data = "abcdefg" 이렇게 담겨져 있는거 같은데 (char)data 해서 한번에 찍어내는게 가능한가요?
(char)data 이렇게하면 분명 한문자만 찍혀야하는거 아닌가요?
답변 부탁드리고 감사합니다...
정말 감사드립니다.