java.lang.Object java.lang.Number java.lang.Long
public final class Long
Long
类在对象中包装了基本类型 long
的值。每个 Long
类型的对象都包含一个 long
类型的字段。
此外,该类提供了多个方法,可以将 long
转换为 String
,将 String
转换为 long
,除此之外,还提供了其他一些处理 long
时有用的常量和方法。
实现注意事项:"bit twiddling" 方法(如 highestOneBit
和 numberOfTrailingZeros
)的实现基于 Henry S. Warren 和 Jr. 撰写的 Hacker's Delight (Addison Wesley, 2002) 一书中的资料。
字段摘要 | |
---|---|
static long |
MAX_VALUE 保持 long 类型的最大值的常量,该值为 263-1。 |
static long |
MIN_VALUE 保持 long 类型的最小值的常量,该值为 -263。 |
static int |
SIZE 用来以二进制补码形式表示 long 值的位数。 |
static Class<Long> |
TYPE 表示基本类型 long 的 Class 实例。 |
构造方法摘要 | |
---|---|
Long(long value) 构造新分配的 Long 对象,表示指定的 long 参数。 |
|
Long(String s) 构造新分配的 Long 对象,表示由 String 参数指示的 long 值。 |
方法摘要 | |
---|---|
static int |
bitCount(long i) 返回指定 long 值的二进制补码表示形式中的 1 位的数量。 |
byte |
byteValue() 以 byte 形式返回此 Long 的值。 |
int |
compareTo(Long anotherLong) 在数字上比较两个 Long 对象。 |
static Long |
decode(String nm) 将 String 解码成 Long 。 |
double |
doubleValue() 以 double 形式返回此 Long 的值。 |
boolean |
equals(Object obj) 将此对象与指定对象进行比较。 |
float |
floatValue() 以 float 形式返回此 Long 的值。 |
static Long |
getLong(String nm) 确定具有指定名称的系统属性的 long 值。 |
static Long |
getLong(String nm, long val) 使用指定名称确定系统属性的 long 值。 |
static Long |
getLong(String nm, Long val) 使用指定名称返回系统属性的 long 值。 |
int |
hashCode() 返回 Long 的哈希码。 |
static long |
highestOneBit(long i) 返回至多有一个 1 位的 long 值,在指定的 long 值中最高位(最左边)的 1 位的位置。 |
int |
intValue() 以 int 形式返回此 Long 的值。 |
long |
longValue() 以 long 值的形式返回此 Long 的值。 |
static long |
lowestOneBit(long i) 返回至多有一个 1 位的 long 值,在指定的 long 值中最低位(最右边)的 1 位的位置。 |
static int |
numberOfLeadingZeros(long i) 在指定 long 值的二进制补码表示形式中最高位(最左边)的 1 位之前,返回零位的数量。 |
static int |
numberOfTrailingZeros(long i) 返回在指定 long 值的二进制补码表示形式中最低位(最右边)的 1 位之后的零位的数量。 |
static long |
parseLong(String s) 将 string 参数解析为有符号十进制 long 。 |
static long |
parseLong(String s, int radix) 将 string 参数解析为有符号的 long ,基数由第二个参数指定。 |
static long |
reverse(long i) 返回通过反转指定 long 值的二进制补码表示形式中位的顺序而获得的值。 |
static long |
reverseBytes(long i) 返回通过反转指定 long 值的二进制补码表示形式中字节的顺序而获得的值。 |
static long |
rotateLeft(long i, int distance) 返回根据指定的位数循环左移指定的 long 值的二进制补码表示形式而得到的值。 |
static long |
rotateRight(long i, int distance) 返回根据指定的位数循环右移指定的 long 值的二进制补码表示形式而得到的值。 |
short |
shortValue() 以 short 形式返回此 Long 的值。 |
static int |
signum(long i) 返回指定 long 值的符号函数。 |
static String |
toBinaryString(long i) 以二进制无符号整数形式返回 long 参数的字符串表示形式。 |
static String |
toHexString(long i) 以十六进制无符号整数形式返回 long 参数的字符串表示形式。 |
static String |
toOctalString(long i) 以八进制无符号整数形式返回 long 参数的字符串表示形式。 |
String |
toString() 返回表示 Long 值的 String 对象。 |
static String |
toString(long i) 返回表示指定 long 的 String 对象。 |
static String |
toString(long i, int radix) 返回在使用第二个参数指定的基数时第一个参数的字符串表示形式。 |
static Long |
valueOf(long l) 返回表示指定 long 值的 Long 实例。 |
static Long |
valueOf(String s) 返回保持指定 String 的值的 Long 对象。 |
static Long |
valueOf(String s, int radix) 当使用第二个参数给出的基数进行解析时,返回保持从指定 String 中提取的值的 Long 对象。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
public static final long MIN_VALUE
long
类型的最小值的常量,该值为 -2
63。
public static final long MAX_VALUE
long
类型的最大值的常量,该值为 2
63-1。
public static final Class<Long> TYPE
long
的
Class
实例。
public static final int SIZE
构造方法详细信息 |
---|
public Long(long value)
Long
对象,表示指定的
long
参数。
value
-
Long
对象表示的值。
public Long(String s) throws NumberFormatException
Long
对象,表示由
String
参数指示的
long
值。该字符串被转换为
long
值,其方式与 radix 参数为 10 的
parseLong
方法所使用的方式一致。
s
- 要转换为
Long
的
String
。
NumberFormatException
- 如果
String
不包含可解析的
long
。
parseLong(java.lang.String, int)
方法详细信息 |
---|
public static String toString(long i, int radix)
如果该基数小于 Character.MIN_RADIX
,或大于 Character.MAX_RADIX
,则使用基数 10
。
如果第一个参数是负数,则结果的第一个元素是 ASCII 字符的减号 '-'
('\u002d'
)。如果第一个参数非负,则结果中不会出现符号字符。
结果的其余字符表示第一个参数的大小。如果大小为零,则用单个零字符 '0'
表示它 ('\u0030'
);否则大小表示形式中的第一个字符将不是零字符。以下 ASCII 字符均被用作数字:
这些是从0123456789abcdefghijklmnopqrstuvwxyz
'\u0030'
到
'\u0039'
和从
'\u0061'
到
'\u007a'
的字符。如果
radix
是
N,则这些字符的第一个
N 用作显示顺序中基数
N 的数字。因此,该数字的十六进制(基数 16)表示形式为
0123456789abcdef
。如果需要使用大写字母,则可以在结果上调用
String.toUpperCase()
方法:
Long.toString(n, 16).toUpperCase()
i
- 要转换为字符串的
long
。
radix
- 将在字符串表示形式中使用的基数。
Character.MAX_RADIX
,
Character.MIN_RADIX
public static String toHexString(long i)
long
参数的字符串表示形式。
如果参数为负,则无符号 long
值为该参数加上 264;否则,它等于该参数。此值将被转换为不带附加前导 0
的十六进制(基数 16)ASCII 数字字符串。如果无符号大小为零,则该数字由单个零字符 '0'
表示 ('\u0030'
);否则,无符号大小表示形式中的第一个字符将不是零字符。下列字符都被用作十六进制数字:
这些是从0123456789abcdef
'\u0030'
到
'\u0039'
和从
'\u0061'
到
'\u0066'
的字符。如果需要使用大写字母,则可以在结果上调用
String.toUpperCase()
方法:
Long.toHexString(n).toUpperCase()
i
- 要转换为字符串的
long
。
long
值的字符串表示形式。
public static String toOctalString(long i)
long
参数的字符串表示形式。
如果参数为负,则无符号 long
值为该参数加上 264;否则,它等于该参数。此值将被转换为不带附加前导 0
的八进制(基数 8)ASCII 数字字符串。
如果无符号大小为零,则该数字用单个零字符 '0'
('\u0030'
) 表示,否则无符号大小表示形式中的第一个字符将不是零字符。以下字符都用作八进制数字:
这些是从01234567
'\u0030'
到
'\u0037'
的字符。
i
- 要转换为字符串的
long
。
long
值的字符串表示形式。
public static String toBinaryString(long i)
long
参数的字符串表示形式。
如果参数为负数,则无符号 long
值为该参数加上 264;否则,它等于该参数。此值将被转换为不带附加前导 0
的二进制(基数 2)ASCII 数字字符串。如果无符号大小为零,则用单个零字符 '0'
表示它 ('\u0030'
);否则,无符号大小表示形式中的第一个字符将不是零字符。字符 '0'
('\u0030'
) 和 '1'
('\u0031'
) 被用作二进制位。
i
- 要转换为字符串的
long
。
long
值的字符串表示形式。
public static String toString(long i)
long
的
String
对象。该参数被转换为有符号的十进制表示形式,并作为字符串返回,该字符串与用该参数和基数 10 作为参数的
toString(long, int)
方法所得到的值非常相似。
i
- 要转换的
long
。
public static long parseLong(String s, int radix) throws NumberFormatException
long
,基数由第二个参数指定。字符串中的字符必须为指定基数中的数字(由
Character.digit(char, int)
是否返回一个非负值来确定),除非第一个字符为 ASCII 字符的减号
'-'
(
'\u002D'
),它表示一个负值。返回得到的
long
值。
注意,不允许将字符 L
('\u004C'
) 和 l
('\u006C'
) 作为类型指示符出现在字符串的结尾处,而这一点在 Java 编程语言源代码中是允许的——除非 L
或 l
以大于 22 的基数形式出现。
如果出现以下情形之一,则抛出 NumberFormatException
类型的异常:
null
或零长度的字符串。 radix
小于 Character.MIN_RADIX
或者大于 Character.MAX_RADIX
。 '-'
('\u002d'
),假定字符串的长度大于 1。 long
类型的值。 示例:
parseLong("0", 10) returns 0L parseLong("473", 10) returns 473L parseLong("-0", 10) returns 0L parseLong("-FF", 16) returns -255L parseLong("1100110", 2) returns 102L parseLong("99", 8) returns NumberFormatException parseLong("Hazelnut", 10) returns NumberFormatException parseLong("Hazelnut", 36) returns 1356099454469L
s
- 包含要解析的
long
表示形式的
String
。
radix
- 将在解析
s
时使用的基数。
long
。
NumberFormatException
- 如果字符串不包含可解析的
long
。
public static long parseLong(String s) throws NumberFormatException
long
。字符串中的字符必须都是十进制数字,除非第一个字符是 ASCII 字符的减号
'-'
(
\u002D'
),它表示一个负值。返回得到的
long
值,该值与用该参数和基数
10
作为参数的
parseLong(java.lang.String, int)
方法得到的值非常相似。
注意,不允许将字符 L
('\u004C'
) 和 l
('\u006C'
) 作为类型指示符出现在字符串的结尾处,这一点在 Java 编程语言源代码中是允许的。
s
- 包含要解析的
long
表示形式的
String
long
。
NumberFormatException
- 如果字符串不包含可解析的
long
。
public static Long valueOf(String s, int radix) throws NumberFormatException
String
中提取的值的
Long
对象。第一个参数被解释为有符号的
long
,基数由第二个参数指定,该值与用该参数作为参数的
parseLong(java.lang.String, int)
方法得到的值非常类似。结果是表示字符串指定的
long
值的
Long
对象。
换句话说,此方法返回一个 Long
对象,它的值等于:
new Long(Long.parseLong(s, radix))
s
- 要解析的字符串
radix
- 将在解释
s
时使用的基数
Long
对象。
NumberFormatException
- 如果
String
不包含可解析的
long
。
public static Long valueOf(String s) throws NumberFormatException
String
的值的
Long
对象。该参数被解释为表示一个有符号的十进制
long
,该值与用该参数作为参数的
parseLong(java.lang.String)
方法得到的值非常相似。结果是表示由字符串指定的整数值的
Long
对象。
换句话说,此方法返回一个 Long
对象,它的值等于:
new Long(Long.parseLong(s))
s
- 要解析的字符串。
Long
对象。
NumberFormatException
- 如果不能将字符串解析为
long
。
public static Long valueOf(long l)
Long(long)
,因为此方法通过缓存频繁请求的值,可以显著提高时间和空间性能。
l
- long 值。
public static Long decode(String nm) throws NumberFormatException
String
解码成
Long
。接受通过以下语法给出的十进制、十六进制和八进制数:
DecimalNumeral、 HexDigits 和 OctalDigits 在 Java Language Specification 中的 §3.10.1 中已经定义。
- DecodableString:
- Signopt DecimalNumeral
- Signopt
0x
HexDigits- Signopt
0X
HexDigits- Signopt
#
HexDigits- Signopt
0
OctalDigits
- Sign:
-
跟在(可选)负号和/或基数说明符("0x
"、"0X
"、"#
" 或前导零)后面的字符的顺序由 Long.parseLong
方法通过指示的基数(10、16 或 8)来解析。字符的顺序必须表示为一个正值,否则将抛出 NumberFormatException
。如果指定 String
的第一个字符是减号,则结果无效。String
中不允许出现空白字符。
nm
- 要解码的
String
。
nm
表示的
long
值的
Long
对象
NumberFormatException
- 如果
String
不包含可解析的
long
。
parseLong(String, int)
public byte byteValue()
public short shortValue()
short
形式返回此
Long
的值。
Number
中的
shortValue
short
类型后该对象表示的数值。
public int intValue()
public long longValue()
public float floatValue()
float
形式返回此
Long
的值。
Number
中的
floatValue
float
类型后该对象表示的数值。
public double doubleValue()
double
形式返回此
Long
的值。
Number
中的
doubleValue
double
类型后该对象表示的数值。
public String toString()
Long
值的
String
对象。该值被转换为有符号十进制表示形式,并作为字符串返回,该字符串与用
long
值作为参数的
toString(long)
方法得到的字符串非常相似。
public int hashCode()
Long
的哈希码。结果是此
Long
对象保持的基本
long
值的两个部分的异或 (XOR)。也就是说,哈希码就是表达式的值:
(int)(this.longValue()^(this.longValue()>>>32))
Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
null
,且
Long
对象与此对象包含相同的
long
值时,结果才为
true
。
obj
- 要与之进行比较的对象。
true
;否则,返回
false
。
Object.hashCode()
,
Hashtable
public static Long getLong(String nm)
long
值。
第一个参数被视为系统属性的名称。通过 System.getProperty(java.lang.String)
方法可以访问该系统属性。然后,以 long
值的形式解释此属性的字符串值,并返回表示此值的 Long
对象。在 getProperty
的定义中可以找到可能的数字格式的详细信息。
如果指定名称没有属性,或者指定名称为空或 null
,抑或属性不具有正确的数字格式时,则返回 null
。
换句话说,此方法返回一个 Long
对象,它的值等于:
getLong(nm, null)
nm
- 属性名。
Long
值。
System.getProperty(java.lang.String)
,
System.getProperty(java.lang.String, java.lang.String)
public static Long getLong(String nm, long val)
long
值。
第一个参数被视为系统属性的名称。通过 System.getProperty(java.lang.String)
方法可以访问该系统属性。然后,以 long
值的形式解释此属性的字符串值,并返回表示此值的 Long
对象。在 getProperty
的定义中可以找到可能的数字格式的详细信息。
第二个参数是默认值。如果指定的名称没有属性,或者该属性不具备正确的数字格式,抑或指定名称为空或 null,则返回表示第二个参数的值的 Long
对象。
换句话说,此方法返回一个 Long
对象,它的值等于:
getLong(nm, new Long(val))
但是实际上,它可能通过以下方式实现:
这样可以避免不需要默认值时进行的不必要的Long result = getLong(nm, null); return (result == null) ? new Long(val) :result;
Long
对象分配。
nm
- 属性名。
val
- 默认值。
Long
值。
System.getProperty(java.lang.String)
,
System.getProperty(java.lang.String, java.lang.String)
public static Long getLong(String nm, Long val)
long
值。第一个参数被视为系统属性的名称。通过
System.getProperty(java.lang.String)
方法可以访问该系统属性。然后,以
long
值的形式解释此属性的字符串值,并且按照
Long.decode
方法返回表示此值的
Long
对象。
0x
或 ASCII 字符 #
开头,后面没有跟减号,则将该属性的其余部分解析为一个十六进制整数,该值与调用参数 radix 为 16 的 valueOf(java.lang.String, int)
方法得到的值非常相似。 0
开头,后跟别的字符,则将它解析为一个八进制整数,该值与调用参数 radix 为 8 的 valueOf(java.lang.String, int)
方法得到的值非常相似。 valueOf(java.lang.String, int)
方法得到的值非常相似。 注意,在所有情况下,都不允许将 L
('\u004C'
) 和 l
('\u006C'
) 作为类型指示符出现在属性值的结尾处,这一点在 Java 编程语言源代码中是允许的。
第二个参数是默认值。如果指定的名称没有属性,或者属性不具有正确的数字格式,抑或指定名称为空或 null
,则返回默认值。
nm
- 属性名。
val
- 默认值。
Long
值。
System.getProperty(java.lang.String)
,
System.getProperty(java.lang.String, java.lang.String)
,
decode(java.lang.String)
public int compareTo(Long anotherLong)
Long
对象。
Comparable<Long>
中的
compareTo
anotherLong
- 要比较的
Long
。