Why is 08 not a valid integer literal in Java?

后端 未结 6 812
清歌不尽
清歌不尽 2020-11-22 06:30

Why is 08 considered an out of range int but 07 and below are not?

6条回答
  •  粉色の甜心
    2020-11-22 06:47

    In Java and several other languages, an integer literal beginning with 0 is interpreted as an octal (base 8) quantity.

    For single-digit numbers (other than 08 and 09, which are not allowed), the result is the same, so you might not notice that they are being interpreted as octal. However, if you write numbers with more than one significant digit you might be confused by the result.

    For example:

    010 ==  8
    024 == 20
    

    Since octal literals are usually not what you want, you should always take care to never begin an integer literal with 0, unless of course you are actually trying to write zero by itself.

提交回复
热议问题