Assigning an int literal to a long wrapper class i

2019-03-04 13:59发布

Why is there a compilation error with Long l = 3 and not with Long l = 3L?

The primitive data type long accepts both 3 and 3l. I understand that 3 is an int literal - but it can't be assigned to a Long wrapper object? int is only 32 bits shouldn't it fit in a 64 bit integer type?

2条回答
戒情不戒烟
2楼-- · 2019-03-04 14:11

Because there isn't an int to Long widening and autoboxing conversion, autoboxing converts from long to Long (but first the value must be widened from an int to a long). You could do 3L as you have, or

Long l = Long.valueOf(3);

or

Long l = (long) 3;
查看更多
Melony?
3楼-- · 2019-03-04 14:19

For additional answer:

3L is equals to (long)3 --> parse it to 3L as it is a long literal

3 is a integer literal

3L is a long literal

in a nutshell, they are different from each other that's why you need to parse int to long or vice versa.

查看更多
登录 后发表回答