原始数据类型——oracle文档说long在Java中的范围是-9,223,372,036,854,775,808到9,223,372,036,854,775,807。 但当我在日食时做这样的事

long i = 12345678910;

它显示我“字面值12345678910的类型int是超出范围”错误。

有两个问题。

1)如何初始化值为12345678910的长?

2)所有的数字文字默认类型int?


您应该添加L: long i = 12345678910L;。 是的。

顺便说一句:它不一定是大写的L,但小写经常与1混淆:)。


你需要像这样在结尾加上大写的L

long i = 12345678910L;

同样适用于3.0f的float

哪个能回答你的两个问题


您需要在数字的末尾添加L字符,以使Java将其识别为长字符。 long i = 12345678910L; 是的。

参见原始数据类型,其中说“一个整数字面值的类型是长,如果它以字母L或L结尾;否则就是int类型。”


要初始化long,需要在末尾添加“L”。 可以是大写,也可以是小写。

所有数值默认为int。即使在对任何整数进行byte操作时,也会先将byte提升为int,然后再执行任何操作。

试试这个

byte a = 1; // declare a byte
a = a*2; //  you will get error here

你会得到错误,因为2默认是int。 因此,您正在尝试将字节与int相乘。 因此result被类型转换为int,而int不能被赋值回byte。