953061688145744
Park Hansu
  • 2016.6.18 16:13
  • 조회수 59
  • 답변수 1
953061688145744
Park Hansu
  • 2016.6.18 16:13
  • 조회수 59
  • 답변수 1

int readCount에 512byte를 저장하고 있는 건가요?

int readCount = -1; 
byte[] buffer = new byte[512];
while((readCount = fis.read(buffer))!= -1){
fos.write(buffer,0,readCount);
}

지금까지 배운 것을 바탕으로 예제를 보면 int타입인 readCount 변수에 fis.read(buffer) 메소드로 읽어들인 512byte를 대입하고 있는 것으로 보입니다.

(1) int 타입 변수는 할당된 크기가 4byte라고 알고 있는데, 어떻게 512byte를 대입 받을 수 있는 건가요?
(2) int라는 단항(?) 변수에 어떻게 배열을 대입할 수 있는 건가요?

어떠한 방식으로 동작하는 건 지 궁금합니다.

  • #자바 중급
  • #Byte 단위 입출력 심화

1 답변

  • Spgjnhnsidwygch8ddkd
    Chandler
    • 2016.6.20 17:33

    int readCount 에 512byte를 저장하는 것이 아닙니다!

    답변1
    강의 1:50 ~ 2:15 부분 참조 해주세요.
    readCount = fis.read(buffer) 에서 readCount 는 읽어들인 수를 저장하는 변수입니다.
    fis.read(buffer) 함수는 읽어들인 수를 리턴하여 그 값을 readCount 에 저장되고, 실제 읽어들인 (최대)512byte의 배열은 buffer 에 저장됩니다.
    만약 더 이상 읽을 byte가 없다면 readCount 에는 -1을 리턴받아 while문을 빠져나오게 됩니다.

    답변2
    int형에 배열이 저장되는 것이 아니라 배열로 선언된 buffer 에 저장되는 것입니다.

    • 완전히 착각하고 있었네요. 덕분에 착각에서 벗어났습니다ㅜㅜ 답변 감사합니다!-Park Hansu
      2016.6.24 21:18

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.