ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Why This Java Loop Is Not Infinite ๐Ÿค”
Dev.toDev.to
Backend

Java byte Overflow๋ฅผ ํ†ตํ•œ Loop ์ข…๋ฃŒ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ถ„์„

Why This Java Loop Is Not Infinite ๐Ÿค”

Buddika Abeykoon2026๋…„ 5์›” 11์ผ1๋ถ„beginner

Context

Java์˜ Primitive Type์ธ byte์˜ ์œ ํ•œํ•œ ์ €์žฅ ๋ฒ”์œ„๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์ˆ˜์น˜์  ํŠน์„ฑ ๋ถ„์„. ๋ฃจํ”„ ์กฐ๊ฑด์‹ i < 10๊ณผ ๊ฐ์†Œ ์—ฐ์‚ฐ i--๊ฐ€ ๊ฒฐํ•ฉ๋˜์–ด ๋ฌดํ•œ ๋ฃจํ”„์ฒ˜๋Ÿผ ๋ณด์ด๋‚˜ ์‹ค์ œ๋กœ๋Š” ํƒ€์ž… ํ•œ๊ณ„์— ๋”ฐ๋ฅธ ๋™์ž‘ ๋ฐฉ์‹ ์ฐจ์ด๋ฅผ ๋ณด์ž„.

Technical Solution

  • 8-bit signed integer์ธ byte ํƒ€์ž…์˜ ํ‘œํ˜„ ๋ฒ”์œ„(-128 ~ 127) ํ™œ์šฉ
  • 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ์†Œ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ์ตœ์†Ÿ๊ฐ’์ธ -128๊นŒ์ง€ ๋„๋‹ฌํ•˜๋Š” ๊ณผ์ • ์„ค๊ณ„
  • -128์—์„œ ์ถ”๊ฐ€ ๊ฐ์†Œ ์‹œ ๋ฐœ์ƒํ•˜๋Š” Integer Overflow ํ˜„์ƒ ์ด์šฉ
  • Overflow ๋ฐœ์ƒ ์‹œ ๊ฐ’์ด ์ตœ๋Œ€์น˜์ธ 127๋กœ Wrap-around ๋˜๋Š” Java JVM ํŠน์„ฑ ์ ์šฉ
  • i=127 ๋„๋‹ฌ ์‹œ loop condition(i < 10)์ด false๋กœ ์ „ํ™˜๋˜์–ด ๋ฃจํ”„๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๊ตฌ์กฐ

1. Primitive Type์˜ ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์—ฐ์‚ฐ ์‹œ Overflow ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ๊ฒ€ํ† 

2. Loop Condition ์„ค๊ณ„ ์‹œ ๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ์ฆ๊ฐ ๋ฐฉํ–ฅ์˜ ๋…ผ๋ฆฌ์  ์ผ์น˜ ์—ฌ๋ถ€ ํ™•์ธ

3. ์˜๋„์น˜ ์•Š์€ Wrap-around ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์ ์ ˆํ•œ ํƒ€์ž…(int, long) ์„ ํƒ ๋ฐ ๋ฒ”์œ„ ์ฒดํฌ ๋กœ์ง ์ถ”๊ฐ€

์›๋ฌธ ์ฝ๊ธฐ