Java的L号(长)规范

时间:2009-04-20 20:34:06

标签: java numbers long-integer short specifications

看来,当你在Java中输入一个数字时,编译器会自动将其读作一个整数,这就是为什么当你输入(long)6000000000(不在整数范围内)时,它会抱怨{ {1}}不是整数。为了纠正这个问题,我必须指定6000000000。我刚刚了解了这个规范。

还有其他数字规格,例如short,byte,float,double吗?这似乎是好事,因为(我假设),如果你可以指定你输入的数字是短的,那么java就不必抛出它 - 这是一个假设,如果我错了,请纠正我。我通常会自己搜索这个问题,但我不知道甚至会调用这种数字规范。

7 个答案:

答案 0 :(得分:158)

long(例如39832L),float(例如2.4f)和double(例如-7.832d)有特定的后缀。

如果没有后缀,并且它是整数类型(例如5623),则假定它是int。如果它不是整数类型(例如3.14159),则假定它是double

在所有其他情况下(byteshortchar),您需要演员,因为没有特定的后缀。

Java规范允许使用大写和小写后缀,但优选long s的大写版本,因为大写L不容易与数字{{1}混淆比小写1

有关详细信息,请参阅JLS section 3.10(请参阅l的定义)。

答案 1 :(得分:13)

我希望你不会介意轻微的切线,但是你可能有兴趣知道除了F(浮动),D(换双)和L (很长时间),a proposal has been made分别为byteshort - YS添加后缀。当使用字节(或短)数组的文字语法时,这将消除转换为字节的需要。引用提案中的示例:

  

主要好处:为什么是平台   如果提案获得通过会更好吗?

     

这样的代码
 byte[] stuff = { 0x00, 0x7F, (byte)0x80,  (byte)0xFF};
     

可以重新编码为

 byte[] ufum7 = { 0x00y, 0x7Fy, 0x80y, 0xFFy };

Joe Darcy正在监督Java 7的Project Coin,his blog是跟踪这些提案的简单方法。

答案 2 :(得分:8)

这些是文字,在Java语言规范的section 3.10中有描述。

答案 3 :(得分:6)

默认情况下,java编译器将任何整数原始数据类型(byte,short,int,long)视为 int 类型。对于 byte short ,只要分配给它们的值在它们的范围内,就没有问题,也不需要后缀。如果分配给 byte short 的值超出其范围,则需要显式类型转换。

例如:

byte b = 130; // CE: range is exceeding.

克服这种执行型铸造。

byte b = (byte)130; //valid, but chances of losing data is there.

如果是长数据类型,它可以毫无困难地接受整数值。假设我们分配了

Long l = 2147483647; //which is max value of int

在这种情况下,不需要像L / l那样的后缀。默认值2147483647被java编译器认为是int类型。内部类型转换由编译器完成,int自动提升为Long类型。

Long l = 2147483648; //CE: value is treated as int but out of range 

这里我们需要将后缀作为L来将java文件2147483648作为long类型处理。

所以最后

Long l = 2147483648L;// works fine.

答案 4 :(得分:1)

  

看起来这些会很好   因为(我假设)你是否可以   指定您输入的号码是   简短然后java不必   施展它

由于文本的解析发生在编译时,因此在性能方面绝对无关紧要。 shortbyte后缀的唯一原因是它会导致更紧凑的代码。

答案 5 :(得分:0)

考虑:

long l = -1 >>> 1;

int a = -1;
long l = a >>> 1;

现在您希望麻烦的代码片段为变量l提供相同的值。因此,我们需要将int文字表达为int s。

答案 6 :(得分:0)

Java 有两种数据类型:

  1. 原始数据类型
  2. 非原始数据类型

某些数据类型需要 long、float 和 double 等规范。

在将上述任何数据类型分配给任何变量时,请始终记住....

  • 以 double 数据类型的“d”结束值。
  • 以长数据类型中的“L”结束值。
  • 以浮点数据类型中的“f”结束值。

示例:

长数 = 15000000000L;

浮动 mysecondnum = 5.75f;

double mynumber = 19.99d;

更多信息:

  • long 数据类型的大小为 8 个字节。
  • float 数据类型的大小为 4 个字节。
  • double 数据类型的大小为 8 个字节。

long 数据类型的精度级别最多为 7-8 个小数点,而 float 数据类型的精度级别最多为 15 个小数点。

编辑:

与此类型转换一起,可用于将原始数据类型从一种更改为另一种。

  • 加宽铸造(自动):从较小的字体到较大的字体
  • 缩小铸造(手动):较大的类型到较小的类型