在Java中初始化一个long

aam*_*dmi 201 java long-integer

原始数据类型-甲骨文的文档说的范围long在Java是-9,223,372,036,854,775,8089,223,372,036,854,775,807.但是当我在日食中做这样的事情的时候

long i = 12345678910;
Run Code Online (Sandbox Code Playgroud)

它显示我" The literal 12345678910 of type int is out of range"错误.

有两个问题.

1)如何long使用值初始化12345678910

2)默认情况下,所有数字文字都是类型int吗?

MBy*_*ByD 405

  1. 你应该添加L:long i = 12345678910L;.
  2. 是.

顺便说一句:它不一定是大写的L,但小写1很多次混淆:).

  • Long.valueOf(12345678910)应该工作. (6认同)
  • 以防万一有人想知道:十六进制也是如此,例如“ 0x200000000L” (2认同)
  • @Pluto`0x20000000L`可以工作,但仍然可以用`int`(一个32位整数)表示,因此`0x20000000`也能正常工作.`0x200000000L`打破了这个边界,使得尾随的'L`成为必要. (2认同)

Jac*_*nds 55

  1. 您需要将L字符添加到数字的末尾,以使Java将其识别为long.

    long i = 12345678910L;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 是.

请参阅" 原始数据类型",其中"如果整数文字以字母L或l结尾,则为long类型;否则为int类型."


Ami*_*far 38

你需要L在最后添加大写字母

long i = 12345678910L;
Run Code Online (Sandbox Code Playgroud)

浮动的同样如此 3.0f

哪个应该回答你的两个问题


Sur*_*bey 15

要初始化很长时间,您需要在末尾添加"L".
它可以是大写或小写.

默认情况下,所有数值都是int.即使您byte使用任何整数执行任何操作,byte也会首先将其提升为int然后执行任何操作.

试试这个

byte a = 1; // declare a byte
a = a*2; //  you will get error here
Run Code Online (Sandbox Code Playgroud)

您会收到错误,因为2默认情况下int.
因此,你想乘byteint.因此,结果被转换为int无法分配回来的结果byte.