InputStream의 read() 메서드의 return 값이 int인 이유는?

2014-05-26 17:25

지금까지 아무 의심없이 사용하고 있었는데 어느 날 학생의 질문이었다. byte라도 충분할텐데.. 이 질문과 답은 아래에서 볼 수 있다.

http://stackoverflow.com/questions/4659659/why-does-inputstreamread-return-an-int-and-not-a-byte

read() 메서드에서 1byte(0~255)를 읽고 싶은데 java의 byte는 -128 ~ 127이다. 또한 EOF(end of file)일 경우 -1을 반환해야 하기 때문에 byte를 사용할 수 없다는 내용이다.

1개의 의견 from SLiPP

2014-07-16 10:56

ㅎㅎ c에서도 마찬가지입니다. -1 리턴 때문에 int로 받아서 char로 캐스팅해 줘야 합니다. 참고로 c의 char는 정수형의 하나입니다.

자바에서 byte 와 char도 정수형으로 취급하는지 궁금하네요.

추가로 자바의 경우 read로 2byte를 읽을 수 있잖아요. 그래서 일단 byte는 아닌 것 같습니다.

의견 추가하기

연관태그

← 목록으로