http://o23750.egloos.com/tag/InputStreamReader/page/1
1상속
1_1코드의 재사용
1_1_1 변수, 멤버
field
1_1_1 다형성
!명심 object class 메소드는 반드시 알아라
-우선은 toString(),
equals(), clone()...등등
!tip
--
System.out.println()에서만 객체.toString을 하면 객체를 찍은것도 동일한 경과가 나오다. 신기하지?
--
equals()는 object안에서는 주소를 비교하도록 되어있어요.
입력
1. System.in.read();
2.
문자열->원하는 자료형으로 parsing
기본명령은 java.lang.* 에 다 들어 있다
import
java.util.Date; = 자바폴더 밑에 유틸폴더 밑에 있는 Date를 쓸꺼에요
import java.io.*; 에 입출력 관련
클래스가 들어있어요
System.in.read(); 는 1byte를 읽어서 int로 반환합니다.
BufferedReader 읽어드린것을 가지고 있어요. 언제까지 용량이
다찰때까지나 내보내라고 하기 전까지
2byte씩 넣어줘요
1byte로 들어오는걸
InputStream 이라 부르고요(주로 그림이나 파일등을 처리해요), 2byte씩 들어오는걸 Reader라고
해요(char담당)
InputStreamReader =
inputStream으로 들어오는것을 Reader화 시켜라. 이런게 왜 있어야 하나? 실제 키보드로 컴퓨터에 자료를 넣어줄때 바이트 단위로
가지만 사람이 읽어야 하니깐.
int data=System.in.read();
BufferdReader r = new
BufferdReader(new InputstreamReader(System.in))
String
str=r.readLine();
//보충 설명 : 자 봅시다. 우선 System.in(얇은 빨래) 이거는 1바이트짜리니깐 InputstreamReader(얇은 빨대와 굵은 빨대를 이어주는애)이걸로 2바이트로
바꿔요 그래서 BufferdReader(굵은 빨대)로 읽는거지요..
해보자
import java.io.*;
public
class IOTest1{
pubilc static void main(String[]
agrs){
System.out.print("age?");
int
age=System.in.read();
System.out.print("\nage:"+age);
}
}
컴파일하면
IOTest1.java:6:
unreported exception java.io.IOException; must be caught or declared to be
thrown
int age=System.in.read();
가 나와요. 이것 한마디로' 예외
처리해주세요' 라는거지요. 이렇게되면 2가지 방법이 있는데 떠넘기거나 처리하는게 있는데 여기서는 떠넘기기를 할꺼에요 자세한건
나중에....
import java.io.*;
public class IOTest1{
pubilc static
void main(String[] agrs) throws
IOException{
System.out.print("age?");
int
age=System.in.read();
System.out.print("\nage:"+age);
}
}
처음과
다른게 뭐가 있어요? throws IOException 이거죠? 이게 떠넘기는 방법이에요 역시 자세한건 나중에
자 실행해보자근영. 해보니
제대로 돌아가는거 같은데 1을 입력하면 49가 나오죠? 이건 뭥미라고 하기전에
1을 아스키코드에서 보면 49로 나와요 그래서 그래요.
그러니 올바른 답이 나오려면
int age=System.in.read();
이부분을
int
age=System.in.read()-'0';
으로 하면되요
이젠 위에꺼 반복해서 받아볼까요?
import
java.io.*;
public class IOTest1{
pubilc static void main(String[]
agrs) throws IOException{
char
yesNo='y';
while(yesNo=='Y'||yesNo=='y'){
System.out.print("age?");
int
age=System.in.read()-'0';
System.out.print("\nage:"+age);
System.out.print("again?");
yesNo=(char)System.in.read();
}
}
}
해보면
원하는 결과가 안나와
그러면 while()마지막에 System.out.print("\n44444"+yesNo+"/////");
을
치고 생각해보면
실제 돌아가는 상황이
age에 9가 들어간다음에 엔터가 들어가는데 원래 enter는 캐리지리턴(/r)과 개행(\n)이
합쳐진거야
그러니깐 실제로 yesNo에는 캐리지리턴이 들어가 이제 이해가?
결국 System.in.read()가 4개 필요하지 어디에
들어갈까? int age=System.in.read()-'0'; 와 yesNo=(char)System.in.read();
에
들어가면되겠지?
해봐 될꺼야. 근데 이거는 한글자만 받으니 2자리 나이를 표현 못하잖아 쉽게 말해서 이걸로 나이를 받는건
나빠욧
!tip
1. 자동형
변환
정수 > 실수
b>s>ch>i>l, f>d
2. 명시적
형변환
실수>정수
3.안되요
boolean>
4.parsing
형변환이 안되는걸 되게
해주에요
import java.io.*;
public class IOTest2{
public static void
main(String[] agrs) throws IOException{
System.out.println("BufferedReader
Test");
InputStream
keyBoardData=System.in; //키보도를 1바이트를
받아요
InputStreamReader link=new InputStreamReader(keyBoardData); //1바이트 빨대와 2바이트
빨대를 연결해요
BufferedReader r= new
BufferedReader(link); //2바이트로
받아요
System.out.print("나이");
int
age=Integer.parseInt(r.readLine()); //
readLine()이 string으로 반환되니 int형으로 파싱해준거에요ㅕ// String
age=r.readLine();
System.out.println("나이:"+age);
}
}
위에껄 반복해
보아요
import java.io.*;
public class IOTest3{
public static void
main(String[] agrs) throws
IOException{
System.out.println("BufferedReader
Test");
String
ch="n";
while(ch.equalsIgnoreCase("n")){
InputStream
keyBoardData=System.in;
InputStreamReader link=new InputStreamReader(keyBoardData);
BufferedReader
r= new
BufferedReader(link);
System.out.print("나이");
int
age=Integer.parseInt(r.readLine());
System.out.print("주소");
String
address=r.readLine();
System.out.println("나이:"+age);
System.out.println("주소:"+address);
System.out.print("go?");
ch=r.readLine();
System.out.print(ch);
}
}
}
추가+)
컴퓨터는 1바이트씩 처리하기에 1바이트씩 읽어들이지만 자바의 char형은 2바이트라 2바이트씩 처리하도록 바꿔준다는 말이지?
'차근차근 > JAVA JSP' 카테고리의 다른 글
Response 객체를 이용한 파일 전송 (0) | 2014.07.26 |
---|---|
[Tip] getWriter() 와 getOutputStream() 차이점 (0) | 2014.07.26 |
[ Java ] e.toString(), e.getMessage(), e.printStackTrace()의 차이점 (0) | 2014.07.26 |
마지막 자식 요소를 새로 추가 .append( content, [content] ) (0) | 2014.07.26 |
document.getElementById (0) | 2014.07.26 |