why don't we need suffix on long in java?

后端 未结 3 1183
悲&欢浪女
悲&欢浪女 2021-01-21 19:18

While writing some code I noticed that long(primitive) data type does not need to have the suffix l or L. My code compiles and run fine with this. Can anyone explain the logic B

3条回答
  •  后悔当初
    2021-01-21 20:06

    Try assigning a really bug number, like long l = 0xFFFFFFFFF;.

    When you initialize a literal like 0xFFFFFFFFF, if there is no suffix and the variable is an integral type(int, long, etc), the value is assumed to be an int. And, an int can hold 32 bits, not 36 bits (9 x 0xF = 9 x '1111') like you will be trying if you type long l = 0xFFFFFFFFF;. So, you have to use a long that has a capacity of 64 bits. Appending 'L' or 'l' to the end of the value, like 0xFFFFFFFFFL, should take care of the compiler error. [Reference]

    In general, since the type conversion to long will happen anyway, it is a good idea to be explicit about that L.

提交回复
热议问题