原始数据类型——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?
原始数据类型——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字符,以使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。