Java 为什么一个长字母写的是L

Java 为什么一个长字母写的是L,java,variables,types,declaration,Java,Variables,Types,Declaration,如果我想保存一个长变量,为什么我必须在值的末尾写一个L或L 例如: 9_223_372 长v=9_223_372L; 但如果我保存它: long v=9_223_372; 这仍然是一个很长的变量。那我为什么要写L或L呢?intliteral 如果您不编写它,Java将把它创建为int,并从那里转换为long: long number = 10; // Is the same as long number = (long) 10; // i.e. int asInt = 10; long nu

如果我想保存一个长变量,为什么我必须在值的末尾写一个
L
L

例如:

9_223_372
长v=9_223_372L;
但如果我保存它:

long v=9_223_372;
这仍然是一个很长的变量。那我为什么要写L或L呢?

int
literal 如果您不编写它,Java将把它创建为
int
,并从那里转换为
long

long number = 10;
// Is the same as
long number = (long) 10;
// i.e.
int asInt = 10;
long number = (long) asInt;
只要您正在编写的数字是
int
,此功能就可以工作,如果不是,则会失败,例如非常高的数字:

// Fails, "integer number too large"
long number = 10_000_000_000_000_000;
使用
L
(或
L
)可以告诉Java,这个文本是一个
long
,而不是
int
。这也消除了不必要的转换:

long number = 10_000_000_000_000_000L;

注 同样的方法也适用于浮点数,当您希望使用
浮点数而不是
双精度
时,可以添加
F
(或
F
)。从技术上讲,您也可以为
double
添加
D
D
,但默认情况下,浮点数文本已经是
double
,因此不需要:

float asFloat = 0.5F;
double asDouble = 0.5D;
double alreadyDoubleByDefault = 0.5;

顺便说一下,请不要使用
l
(小
l
),它很容易与
1
(一)混淆。

long v=9_223_372_036_854_775
你试过运行这个吗?后缀
L
是大于
int
范围的
long
数字所必需的。另一方面:Is更倾向于使用
L
而不是
L
,因为对于大多数字体,
L
很容易被误读为
1
。对于int范围之外的长数字,99999999999999 L,以及对于同时具有int和long的上下文-seldom@DorianGray,出于同样的原因,在使用双打时,您还会看到
d
优于
d