왜 이 Java 루프는 무한하지 않은가 🤔

발행: (2026년 5월 11일 PM 02:31 GMT+9)
2 분 소요
원문: Dev.to

Source: Dev.to

Code Example

public class Main
}
}

Sample Output

Start
0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44, -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, -60, -61, -62, -63, -64, -65, -66, -67, -68, -69, -70, -71, -72, -73, -74, -75, -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, -87, -88, -89, -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, -100, -101, -102, -103, -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -114, -115, -116, -117, -118, -119, -120, -121, -122, -123, -124, -125, -126, -127, -128,
"i" value is 127
End

Why the Loop Terminates

루프가 무한히 실행되는 것처럼 보이는 이유는 변수 i가 계속 감소하면서 항상 10보다 작아 보이기 때문입니다. 하지만 ibyte 타입으로 선언되었으며, Java의 byte‑128부터 127까지의 값만 저장할 수 있습니다.

  1. 루프는 0에서 시작해 각 반복마다 i를 감소시킵니다.
  2. i‑128에 도달하고 한 번 더 감소하면 ‑129를 표현할 수 없습니다.
  3. Java의 byte 오버플로우가 발생하면서 값이 127로 감싸집니다.
  4. i == 127이 되면 루프 조건 i < 10거짓이 되므로 루프가 종료됩니다.

따라서 byte 타입의 오버플로우 때문에 루프가 영원히 실행되지 않고 종료됩니다.

0 조회
Back to Blog

관련 글

더 보기 »

Python에서 str() vs repr() vs print()

개요 파이썬을 배우다 보면 종종 비슷해 보이는 세 가지 내장 유틸리티를 만나게 됩니다: - str - repr - print 처음에는 이들이 같은 일을 하는 것처럼 보일 수 있습니다—