int data = is.read(); //이렇게 쓰면 망한다.
while (true) {
if (data == -1)
break;
System.out.println(data);
}
is.close();
} catch (Exception e) {
e.printStackTrace();
}
/*
이렇게 쓰자 ↓
*/
while (true) {
int data = is.read();
if (data == -1)
break;
System.out.println(data);
}
is.close();
} catch (Exception e) {
e.printStackTrace();
}
while 문 안에 int data가 있느냐 없느냐가 무한 루프를 멈추느냐 아니냐가 되어버린다.
이유: int data = is.read();가 while문 밖에 있어버리면 계속 새롭게 정의되어서
딱 한 번만 첫 번째 바이트를 읽고 while 문 안에있는 data 변수는 처음에 읽은 값으로 고정되어버린다.
같은 값만 무한으로 출력된다.
'【Java】' 카테고리의 다른 글
| Object .toString() (0) | 2025.08.27 |
|---|---|
| [JAVA] 기본 생성자가 없을때 발생하는 java.lang.IllegalStateException: (1) | 2025.08.14 |
| [java] thread 1 (1) | 2025.08.07 |
| java8에서 Object.equals 재정의해서 사용하기 (3) | 2025.08.04 |
| [Java] new int[]{} 형식 (1) | 2025.06.30 |