Long
更新时间: 2021-11-01 17:20
java.lang.Object
|—java.lang.Number
|—|—java.lang.Long
public final class Long
extends Number
implements Comparable<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 int | BYTES | 用于以二进制补码形式表示 long 值的字节数。 |
static long | MAX_VALUE | 一个保持 long 可以拥有的最大值的常数,263-1。 |
static long | MIN_VALUE | 一个保持 long 可以具有的最小值的常数,-263。 |
static int | SIZE | 用于以二进制补码形式表示 long 值的位数。 |
static ClassLong | TYPE | 表示基本类型 long 的 Class 实例。 |
构造函数摘要
构造函数 | 描述 |
---|---|
Long(long value) | 构造一个新分配的 Long 对象,该对象表示指定的 long 参数。 |
Long(String s) | 构造一个新分配的 Long 对象,该对象表示由 String 参数指示的 long 值。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
static int | bitCount(long i) | 返回指定 long 值的二进制补码表示中的一位数。 |
byte | byteValue() | 在缩小原语转换后,将此 Long 的值作为一个字节返回。 |
static int | compare(long x, long y) | 以数字方式比较两个 long 值。 |
int | compareTo(Long anotherLong) | 以数字方式比较两个 Long 对象。 |
static int | compareUnsigned(long x, long y) | 比较两个长值,将值视为无符号的数值。 |
static Long | decode(String nm) | 将 String 解码为 Long。 |
static long | divideUnsigned(long dividend, long divisor) | 返回第一个参数除以第二个参数的无符号商,其中每个参数和结果都被解释为无符号值。 |
double | doubleValue() | 在扩展原始转换后,将此 Long 的值作为双精度值返回。 |
boolean | equals(Object obj) | 将此对象与指定对象进行比较。 |
float | floatValue() | 在扩大原始转换后,将此 Long 的值作为浮点数返回。 |
static Long | getLong(String nm) | 确定具有指定名称的系统属性的长值。 |
static Long | getLong(String nm, long val) | 确定具有指定名称的系统属性的长值。 |
static Long | getLong(String nm, Long val) | 返回具有指定名称的系统属性的长值。 |
int | hashCode() | 返回此 Long 的哈希码。 |
static int | hashCode(long value) | 返回长值的哈希码; 与 Long.hashCode() 兼容。 |
static long | highestOneBit(long i) | 在指定的 long 值的最高(“最左边”)一位的位置返回一个最多具有单个一位的 long 值。 |
int | intValue() | 在缩小原始转换后,将此 Long 的值作为 int 返回。 |
long | longValue() | 将此 Long 的值作为 long 值返回。 |
static long | lowestOneBit(long i) | 在指定的 long 值中的最低位(“最右边”)一位的位置返回一个最多具有单个一位的 long 值。 |
static long | max(long a, long b) | 返回两个 long 值中的较大者,就像调用 Math#max(long, long) 一样。 |
static long | min(long a, long b) | 返回两个 long 值中较小的一个,就像调用 Math#min(long, long) 一样。 |
static int | numberOfLeadingZeros(long i) | 返回指定 long 值的二进制补码表示中最高位(“最左边”)一位之前的零位数。 |
static int | numberOfTrailingZeros(long i) | 返回指定 long 值的二进制补码表示中最低位(“最右边”)一位之后的零位数。 |
static long | parseLong(String s) | 将字符串参数解析为有符号十进制长。 |
static long | parseLong(String s, int radix) | 将字符串参数解析为第二个参数指定的基数中的有符号长整数。 |
static long | parseUnsignedLong(String s) | 将字符串参数解析为无符号十进制长。 |
static long | parseUnsignedLong(String s, int radix) | 将字符串参数解析为第二个参数指定的基数中的无符号长整数。 |
static long | remainderUnsigned(long dividend, long divisor) | 返回第一个参数除以第二个参数得到的无符号余数,其中每个参数和结果都被解释为无符号值。 |
static long | reverse(long i) | 返回通过反转指定 long 值的二进制补码表示中的位顺序获得的值。 |
static long | reverseBytes(long i) | 返回通过反转指定 long 值的二进制补码表示中的字节顺序获得的值。 |
static long | rotateLeft(long i, int distance) | 返回通过将指定长整型值的二进制补码表示形式向左旋转指定位数而获得的值。 |
static long | rotateRight(long i, int distance) | 返回通过将指定 long 值的二进制补码表示向右旋转指定位数获得的值。 |
short | shortValue() | 在缩小基元转换后,将此 Long 的值作为 short 返回。 |
static int | signum(long i) | 返回指定 long 值的符号函数。 |
static long | sum(long a, long b) | 根据 + 运算符将两个 long 值相加。 |
static String | toBinaryString(long i) | 将 long 参数的字符串表示形式返回为以 2 为底的无符号整数。 |
static String | toHexString(long i) | 将 long 参数的字符串表示形式返回为以 16 为底的无符号整数。 |
static String | toOctalString(long i) | 将 long 参数的字符串表示形式返回为以 8 为底的无符号整数。 |
String | toString() | 返回表示此 Long 值的 String 对象。 |
static String | toString(long i) | 返回表示指定 long 的 String 对象。 |
static String | toString(long i, int radix) | 以第二个参数指定的基数返回第一个参数的字符串表示形式。 |
static String | toUnsignedString(long i) | 将参数的字符串表示形式返回为无符号十进制值。 |
static String | toUnsignedString(long i, int radix) | 将第一个参数的字符串表示形式返回为第二个参数指定的基数中的无符号整数值。 |
static Long | valueOf(long l) | 返回一个 Long 实例,表示指定的 long 值。 |
static Long | valueOf(String s) | 返回保存指定字符串值的 Long 对象。 |
static Long | valueOf(String s, int radix) | 当使用第二个参数给出的基数进行解析时,返回一个 Long 对象,该对象包含从指定 String 中提取的值。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
字段详细信息
BYTES
public static final int BYTES
用于以二进制补码形式表示 long 值的字节数。
MAX_VALUE
public static final long MAX_VALUE
一个保持 long 可以拥有的最大值的常数,263-1。
MIN_VALUE
public static final long MIN_VALUE
一个保持 long 可以具有的最小值的常数,-263。
SIZE
public static final int SIZE
用于以二进制补码形式表示 long 值的位数。
TYPE
public static final ClassLong TYPE
表示基本类型 long 的 Class 实例。
构造函数详细信息
Long
public Long(long value)
构造一个新分配的 Long 对象,该对象表示指定的 long 参数。
参数:
参数名称 | 参数描述 |
---|---|
value | Long 对象要表示的值。 |
Long
public Long(String s) throws NumberFormatException
构造一个新分配的 Long 对象,该对象表示由 String 参数指示的 long 值。 字符串转换为 long 值的方式与 parseLong 方法用于基数 10 的方式完全相同。
参数:
参数名称 | 参数描述 |
---|---|
s | 要转换为 Long 的字符串。 |
Throws:
Throw名称 | Throw描述 |
---|---|
NumberFormatException | 如果 String 不包含可解析的 long。 |
方法详情
toString
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 个字符按所示顺序用作 radix-N 位。 因此,十六进制(基数 16)的数字是 0123456789abcdef。 如果需要大写字母,可以对结果调用 String.toUpperCase() 方法:
Long.toString(n, 16).toUpperCase()
参数:
参数名称 | 参数描述 |
---|---|
i | 要转换为字符串的 long。 |
radix | 在字符串表示中使用的基数。 |
返回:
以指定基数表示的参数的字符串表示形式。
toUnsignedString
public static String toUnsignedString(long i, int radix)
将第一个参数的字符串表示形式返回为第二个参数指定的基数中的无符号整数值。
如果基数小于 Character.MIN_RADIX 或大于 Character.MAX_RADIX,则使用基数 10。
请注意,由于第一个参数被视为无符号值,因此不会打印前导符号字符。
如果幅度为零,则由单个零字符’0’(’\u0030’)表示; 否则,幅度表示的第一个字符将不是零字符。
基数和用作数字的字符的行为与 toString 相同。
参数:
参数名称 | 参数描述 |
---|---|
i | 要转换为无符号字符串的整数。 |
radix | 在字符串表示中使用的基数。 |
返回:
指定基数中参数的无符号字符串表示形式。
toHexString
public static String toHexString(long i)
将 long 参数的字符串表示形式返回为以 16 为底的无符号整数。
unsigned long 值是参数加上 264(如果参数为负数); 否则,它等于参数。 此值将转换为十六进制(以 16 为基数)的 ASCII 数字字符串,没有额外的前导 0。
可以通过调用 Long#parseUnsignedLong(String, int) 从返回的字符串 s 中恢复参数的值。
如果无符号幅度为零,则由单个零字符’0’(’\u0030’)表示; 否则,无符号幅度表示的第一个字符将不是零字符。 以下字符用作十六进制数字:
0123456789abcdef
这些是字符 ‘\u0030’ 到 ‘\u0039’ 和 ‘\u0061’ 到 ‘\u0066’。 如果需要大写字母,可以对结果调用 String.toUpperCase() 方法:
Long.toHexString(n).toUpperCase()
参数:
参数名称 | 参数描述 |
---|---|
i | 要转换为字符串的 long。 |
返回:
由十六进制参数表示的无符号长整数值的字符串表示形式(以 16 为基数)。
toOctalString
public static String toOctalString(long i)
将 long 参数的字符串表示形式返回为以 8 为底的无符号整数。
unsigned long 值是参数加上 264(如果参数为负数); 否则,它等于参数。 此值被转换为八进制(以 8 为基数)的 ASCII 数字字符串,没有额外的前导 0。
可以通过调用 Long#parseUnsignedLong(String, int) 从返回的字符串 s 中恢复参数的值。
如果无符号幅度为零,则由单个零字符’0’(’\u0030’)表示; 否则,无符号幅度表示的第一个字符将不是零字符。 以下字符用作八进制数字:
01234567
这些是字符 ‘\u0030’ 到 ‘\u0037’。
参数:
参数名称 | 参数描述 |
---|---|
i | 要转换为字符串的 long。 |
返回:
由八进制参数表示的无符号长整型值的字符串表示形式(以 8 为基数)。
toBinaryString
public static String toBinaryString(long i)
将 long 参数的字符串表示形式返回为以 2 为底的无符号整数。
unsigned long 值是参数加上 264(如果参数为负数); 否则,它等于参数。 此值被转换为二进制(以 2 为基数)的 ASCII 数字字符串,没有额外的前导 0。
可以通过调用 Long#parseUnsignedLong(String, int) 从返回的字符串 s 中恢复参数的值。
如果无符号幅度为零,则由单个零字符’0’(’\u0030’)表示; 否则,无符号幅度表示的第一个字符将不是零字符。 字符 ‘0’ (‘\u0030’) 和 ‘1’ (‘\u0031’) 用作二进制数字。
参数:
参数名称 | 参数描述 |
---|---|
i | 要转换为字符串的 long。 |
返回:
由二进制参数表示的无符号长整型值的字符串表示形式(以 2 为基数)。
toString
public static String toString(long i)
返回表示指定 long 的 String 对象。 参数被转换为带符号的十进制表示并作为字符串返回,就像参数和基数 10 作为 toString(long,int) 方法的参数一样。
参数:
参数名称 | 参数描述 |
---|---|
i | 一个很长的转换。 |
返回:
以 10 为基数的参数的字符串表示形式。
toUnsignedString
public static String toUnsignedString(long i)
将参数的字符串表示形式返回为无符号十进制值。 参数被转换为无符号十进制表示并以字符串形式返回,就像参数和基数 10 作为 toUnsignedString(long,int) 方法的参数一样。
参数:
参数名称 | 参数描述 |
---|---|
i | 要转换为无符号字符串的整数。 |
返回:
参数的无符号字符串表示。
parseLong
public static long parseLong(String s, int radix) throws NumberFormatException
将字符串参数解析为第二个参数指定的基数中的有符号长整数。字符串中的字符必须都是指定基数的数字(由 Character.digit(char, int) 是否返回非负值决定),除了第一个字符可能是 ASCII 减号 ‘-‘ (‘\u002D ‘) 表示负值或 ASCII 加号 ‘+’ (‘\u002B’) 表示正值。返回结果的 long 值。
请注意,字符 L (‘\u004C’) 和 l (‘\u006C’) 都不允许作为类型指示符出现在字符串的末尾,这在 Java 编程语言源代码中是允许的 – 除了 L或 l 可能显示为大于或等于 22 的基数的数字。
如果发生以下任何一种情况,则会引发 NumberFormatException 类型的异常:
- 第一个参数为空或长度为零的字符串。
- 基数小于 Character.MIN_RADIX 或大于 Character.MAX_RADIX。
- 字符串的任何字符都不是指定基数的数字,除非第一个字符可以是减号’-‘(’\u002d’)或加号’+’(’\u002B’),前提是字符串比长度 1 长。
- 字符串表示的值不是 long 类型的值。
例子:
parseLong("0", 10) returns 0L
parseLong("473", 10) returns 473L
parseLong("+42", 10) returns 42L
parseLong("-0", 10) returns 0L
parseLong("-FF", 16) returns -255L
parseLong("1100110", 2) returns 102L
parseLong("99", 8) throws a NumberFormatException
parseLong("Hazelnut", 10) throws a NumberFormatException
parseLong("Hazelnut", 36) returns 1356099454469L
参数:
参数名称 | 参数描述 |
---|---|
s | 包含要解析的长表示的字符串。 |
radix | 解析 s 时要使用的基数。 |
返回:
由指定基数中的字符串参数表示的 long。
Throws:
Throw名称 | Throw描述 |
---|---|
NumberFormatException | 如果字符串不包含可解析的 long。 |
parseLong
public static long parseLong(String s) throws NumberFormatException
将字符串参数解析为有符号十进制长。 字符串中的字符必须都是十进制数字,除了第一个字符可以是 ASCII 减号 ‘-‘ (\u002D’) 来表示负值或 ASCII 加号 ‘+’ (‘\u002B’) 来表示 表示正值。 返回结果 long 值,就好像参数和基数 10 作为参数提供给 parseLong(java.lang.String,int) 方法一样。
请注意,字符 L (‘\u004C’) 和 l (‘\u006C’) 都不允许作为类型指示符出现在字符串的末尾,这在 Java 编程语言源代码中是允许的。
参数:
参数名称 | 参数描述 |
---|---|
s | 一个包含要解析的长表示的字符串 |
返回:
由十进制参数表示的 long。
Throws:
Throw名称 | Throw描述 |
---|---|
NumberFormatException | 如果字符串不包含可解析的 long。 |
parseUnsignedLong
public static long parseUnsignedLong(String s, int radix) throws NumberFormatException
将字符串参数解析为第二个参数指定的基数中的无符号长整数。无符号整数将通常与负数关联的值映射到大于 MAX_VALUE 的正数。字符串中的字符必须都是指定基数的数字(由 Character.digit(char, int) 是否返回非负值决定),除了第一个字符可能是 ASCII 加号 ‘+’ (‘\u002B ‘)。返回结果整数值。
如果发生以下任何一种情况,则会引发 NumberFormatException 类型的异常:
- 第一个参数为空或长度为零的字符串。
- 基数小于 Character.MIN_RADIX 或大于 Character.MAX_RADIX。
- 字符串的任何字符都不是指定基数的数字,除非第一个字符可以是加号“+”(“\u002B”),前提是该字符串的长度大于 1。
- 字符串表示的值大于最大的 unsigned long 264-1。
参数:
参数名称 | 参数描述 |
---|---|
s | 包含要解析的无符号整数表示的字符串 |
radix | 解析 s 时要使用的基数。 |
返回:
由指定基数中的字符串参数表示的无符号长整数。
Throws:
Throw名称 | Throw描述 |
---|---|
NumberFormatException | 如果 String 不包含可解析的 long。 |
parseUnsignedLong
public static long parseUnsignedLong(String s) throws NumberFormatException
将字符串参数解析为无符号十进制长。 字符串中的字符都必须是十进制数字,除了第一个字符可能是 ASCII 加号“+”(“\u002B”)。 返回结果整数值,就好像参数和基数 10 作为参数提供给 parseUnsignedLong(java.lang.String,int) 方法一样。
参数:
参数名称 | 参数描述 |
---|---|
s | 一个包含要解析的无符号长表示的字符串 |
返回:
由十进制字符串参数表示的无符号长整型值
Throws:
Throw名称 | Throw描述 |
---|---|
NumberFormatException | 如果字符串不包含可解析的无符号整数。 |
valueOf
public static Long valueOf(String s, int radix) throws NumberFormatException
当使用第二个参数给出的基数进行解析时,返回一个 Long 对象,该对象包含从指定 String 中提取的值。 第一个参数被解释为表示第二个参数指定的基数中的有符号长整数,就像将参数提供给 parseLong(java.lang.String,int) 方法一样。 结果是一个 Long 对象,表示字符串指定的 long 值。
换句话说,此方法返回一个 Long 对象,其值等于:
new Long(Long.parseLong(s, radix))
参数:
参数名称 | 参数描述 |
---|---|
s | 要解析的字符串 |
radix | 用于解释 s 的基数 |
返回:
一个 Long 对象,保存由指定基数中的字符串参数表示的值。
Throws:
Throw名称 | Throw描述 |
---|---|
NumberFormatException | 如果 String 不包含可解析的 long。 |
valueOf
public static Long valueOf(String s) throws NumberFormatException
返回保存指定字符串值的 Long 对象。 该参数被解释为表示一个带符号的十进制长整数,就像将该参数提供给 parseLong(java.lang.String) 方法一样。 结果是一个 Long 对象,表示字符串指定的整数值。
换句话说,此方法返回一个 Long 对象,其值等于:
new Long(Long.parseLong(s))
参数:
参数名称 | 参数描述 |
---|---|
s | 要解析的字符串。 |
返回:
一个 Long 对象,保存由字符串参数表示的值。
Throws:
Throw名称 | Throw描述 |
---|---|
NumberFormatException | 如果字符串无法解析为 long。 |
valueOf
public static Long valueOf(long l)
返回一个 Long 实例,表示指定的 long 值。 如果不需要新的 Long 实例,则通常应优先使用此方法而不是构造函数 Long(long),因为此方法可能会通过缓存频繁请求的值来显着提高空间和时间性能。 请注意,与 Integer 类中的 Integer#valueOf(int) 不同,此方法不需要缓存特定范围内的值。
参数:
参数名称 | 参数描述 |
---|---|
l | 一个long值 |
返回:
表示 l 的 Long 实例。
decode
public static Long decode(String nm) throws NumberFormatException
将 String 解码为 Long。 接受以下语法给出的十进制、十六进制和八进制数:
可解码字符串:
Signopt 十进制数字
Signopt 0x HexDigits
Signopt 0X HexDigits
Signopt #HexDigits
Signopt 0 八进制数字
符号:
+
DecimalNumeral、HexDigits 和 OctalDigits 的定义见《Java™ 语言规范》第 3.10.1 节,但数字之间不接受下划线。
可选符号和/或基数说明符(“0x”、“0X”、“#”或前导零)之后的字符序列由具有指示基数(10、16 或 8)的 Long.parseLong 方法解析 )。 此字符序列必须表示正值,否则将引发 NumberFormatException。 如果指定字符串的第一个字符是减号,则结果为否定。 字符串中不允许有空格字符。
参数:
参数名称 | 参数描述 |
---|---|
nm | 要解码的字符串。 |
返回:
一个 Long 对象,保存由 nm 表示的 long 值
Throws:
Throw名称 | Throw描述 |
---|---|
NumberFormatException | 如果 String 不包含可解析的 long。 |
byteValue
public byte byteValue()
在缩小原语转换后,将此 Long 的值作为一个字节返回。
覆盖:
类 Number 中的 byteValue
返回:
此对象在转换为字节类型后表示的数值。
shortValue
public short shortValue()
在缩小基元转换后,将此 Long 的值作为 short 返回。
覆盖:
类 Number 中的 shortValue
返回:
此对象在转换为 short 类型后表示的数值。
intValue
public int intValue()
在缩小原始转换后,将此 Long 的值作为 int 返回。
指定者:
类 Number 中的 intValue
返回:
此对象在转换为 int 类型后表示的数值。
longValue
public long longValue()
将此 Long 的值作为 long 值返回。
指定者:
类 Number 中的 longValue
返回:
此对象在转换为 long 类型后表示的数值。
floatValue
public float floatValue()
在扩大原始转换后,将此 Long 的值作为浮点数返回。
指定者:
类 Number 中的 floatValue
返回:
此对象在转换为 float 类型后表示的数值。
doubleValue
public double doubleValue()
在扩展原始转换后,将此 Long 的值作为双精度值返回。
指定者:
类 Number 中的 doubleValue
返回:
此对象在转换为 double 类型后表示的数值。
toString
public String toString()
返回表示此 Long 值的 String 对象。 该值被转换为带符号的十进制表示并以字符串形式返回,就像将 long 值作为参数提供给 toString(long) 方法一样。
覆盖:
类 Object 中的 toString
返回:
以 10 为基数的此对象值的字符串表示形式。
hashCode
public int hashCode()
返回此 Long 的哈希码。 结果是此 Long 对象持有的原始 long 值的两半的异或。 也就是说,哈希码是表达式的值:
(int)(this.longValue()^(this.longValue()>>>32))
覆盖:
类 Object 中的 hashCode
返回:
此对象的哈希码值。
hashCode
public static int hashCode(long value)
返回长值的哈希码; 与 Long.hashCode() 兼容。
参数:
参数名称 | 参数描述 |
---|---|
value | 哈希值 |
返回:
long 值的哈希码值。
equals
public boolean equals(Object obj)
将此对象与指定对象进行比较。 当且仅当参数不为 null 并且是包含与该对象相同的 long 值的 Long 对象时,结果才为真。
覆盖:
类 Object 中的等于
参数:
参数名称 | 参数描述 |
---|---|
obj | 比较的对象。 |
返回:
如果对象相同,则为 true; 否则为假。
getLong
public static Long getLong(String nm)
确定具有指定名称的系统属性的长值。
第一个参数被视为系统属性的名称。 系统属性可通过 System.getProperty(java.lang.String) 方法访问。 然后使用 Long#decode 支持的语法将此属性的字符串值解释为 long 值,并返回表示该值的 Long 对象。
如果没有具有指定名称的属性,如果指定的名称为空或 null,或者如果属性没有正确的数字格式,则返回 null。
换句话说,此方法返回一个 Long 对象,其值等于:
getLong(nm, null)
参数:
参数名称 | 参数描述 |
---|---|
nm | 属性名称 |
返回:
属性的 Long 值。
Throws:
Throw名称 | Throw描述 |
---|---|
SecurityException | 出于与 System#getProperty(String) 相同的原因 |
getLong
public static Long getLong(String nm, long val)
确定具有指定名称的系统属性的长值。
第一个参数被视为系统属性的名称。 系统属性可通过 System.getProperty(java.lang.String) 方法访问。 然后使用 Long#decode 支持的语法将此属性的字符串值解释为 long 值,并返回表示该值的 Long 对象。
第二个参数是默认值。 如果没有指定名称的属性,如果属性没有正确的数字格式,或者指定的名称为空或 null,则返回表示第二个参数的值的 Long 对象。
换句话说,此方法返回一个 Long 对象,其值等于:
getLong(nm, new Long(val))
但在实践中,它可以通过以下方式实现:
Long result = getLong(nm, null); return (result == null) ? new Long(val) : result;
以避免在不需要默认值时对 Long 对象进行不必要的分配。
参数:
参数名称 | 参数描述 |
---|---|
nm | 属性名称 |
val | 默认值 |
返回:
属性的 Long 值。
Throws:
Throw名称 | Throw描述 |
---|---|
SecurityException | 出于与 System#getProperty(String) 相同的原因 |
getLong
public static Long getLong(String nm, Long val)
返回具有指定名称的系统属性的长值。第一个参数被视为系统属性的名称。系统属性可通过 System.getProperty(java.lang.String) 方法访问。然后根据 Long#decode 方法将此属性的字符串值解释为 long 值,并返回表示该值的 Long 对象;总之:
- 如果属性值以两个 ASCII 字符 0x 或 ASCII 字符 # 开头,后面没有减号,则其余部分将被解析为十六进制整数,与方法 valueOf(java.lang.String,int ) 基数为 16。
- 如果属性值以 ASCII 字符 0 后跟另一个字符开头,则它被解析为八进制整数,与基数为 8 的 valueOf(java.lang.String,int) 方法完全相同。
- 否则,属性值将被解析为十进制整数,与基数为 10 的 valueOf(java.lang.String,int) 方法完全相同。
请注意,在任何情况下,都不允许 L (‘\u004C’) 和 l (‘\u006C’) 出现在属性值的末尾作为类型指示符,这在 Java 编程语言源代码中是允许的。
第二个参数是默认值。如果没有指定名称的属性,如果属性没有正确的数字格式,或者指定的名称为空或 null,则返回默认值。
参数:
参数名称 | 参数描述 |
---|---|
nm | 属性名称 |
val | 默认值 |
返回:
属性的 Long 值。
Throws:
Throw名称 | Throw描述 |
---|---|
SecurityException | 出于与 System#getProperty(String) 相同的原因 |
compareTo
public int compareTo(Long anotherLong)
以数字方式比较两个 Long 对象。
指定者:
接口 ComparableLong 中的 compareTo
参数:
参数名称 | 参数描述 |
---|---|
anotherLong | 被比较的Long |
返回:
如果此 Long 等于参数 Long,则值为 0; 如果此 Long 在数值上小于参数 Long,则值小于 0; 如果此 Long 在数值上大于参数 Long(有符号比较),则值大于 0。
compare
public static int compare(long x, long y)
以数字方式比较两个 long 值。 返回的值与通过以下方式返回的值相同:
Long.valueOf(x).compareTo(Long.valueOf(y))
参数:
参数名称 | 参数描述 |
---|---|
x | 第一个要比较的long |
y | 第二个要比较的long |
返回:
如果 x == y,则值为 0; 如果 x < y,则值小于 0; 如果 x > y,则值大于 0
compareUnsigned
public static int compareUnsigned(long x, long y)
比较两个 long 值,将这些值视为无符号的数值。
参数:
参数名称 | 参数描述 |
---|---|
x | 第一个要比较的long |
y | 第二个要比较的long |
返回:
如果 x == y,则值为 0; 如果 x < y 作为无符号值,则值小于 0; 如果 x > y 作为无符号值,则值大于 0
divideUnsigned
public static long divideUnsigned(long dividend, long divisor)
返回第一个参数除以第二个参数的无符号商,其中每个参数和结果都被解释为无符号值。
请注意,在二进制补码算术中,如果两个操作数都被视为有符号或无符号,则加法、减法和乘法这三个其他基本算术运算按位相同。 因此不提供单独的 addUnsigned 等方法。
参数:
参数名称 | 参数描述 |
---|---|
dividend | 被除的值 |
divisor | 进行除法的值 |
返回:
第一个参数的无符号商除以第二个参数
remainderUnsigned
public static long remainderUnsigned(long dividend, long divisor)
返回第一个参数除以第二个参数得到的无符号余数,其中每个参数和结果都被解释为无符号值。
参数:
参数名称 | 参数描述 |
---|---|
dividend | 被除的值 |
divisor | 进行除法的值 |
返回:
第一个参数的无符号余数除以第二个参数
highestOneBit
public static long highestOneBit(long i)
在指定的 long 值的最高(“最左边”)一位的位置返回一个最多具有单个一位的 long 值。 如果指定的值在其二进制补码表示中没有一位,即等于零,则返回零。
参数:
参数名称 | 参数描述 |
---|---|
i | 要计算其最高一位的值 |
返回:
具有单个一位的长值,位于指定值中最高位的位置,如果指定的值本身等于 0,则为 0。
lowestOneBit
public static long lowestOneBit(long i)
在指定的 long 值中的最低位(“最右边”)一位的位置返回一个最多具有单个一位的 long 值。 如果指定的值在其二进制补码表示中没有一位,即等于零,则返回零。
参数:
参数名称 | 参数描述 |
---|---|
i | 要计算其最低一位的值 |
返回:
具有单个一位的长值,位于指定值中最低位的位置,如果指定值本身等于 0,则为 0。
numberOfLeadingZeros
public static int numberOfLeadingZeros(long i)
返回指定 long 值的二进制补码表示中最高位(“最左边”)一位之前的零位数。 如果指定的值在其二进制补码表示中没有一位,则返回 64,换句话说,如果它等于 0。
请注意,此方法与以 2 为底的对数密切相关。对于所有正 long 值 x:
- floor(log2(x)) = 63 – numberOfLeadingZeros(x)
- ceil(log2(x)) = 64 – numberOfLeadingZeros(x – 1)
参数:
参数名称 | 参数描述 |
---|---|
i | 要计算前导零个数的值 |
返回:
指定 long 值的二进制补码表示中最高位(“最左边”)一位之前的零位数,如果值等于 0,则为 64。
numberOfTrailingZeros
public static int numberOfTrailingZeros(long i)
返回指定 long 值的二进制补码表示中最低位(“最右边”)一位之后的零位数。 如果指定的值在其二进制补码表示中没有一位,则返回 64,换句话说,如果它等于 0。
参数:
参数名称 | 参数描述 |
---|---|
i | 要计算其尾随零数量的值 |
返回:
指定 long 值的二进制补码表示中最低位(“最右边”)一位之后的零位的数量,如果值等于 0,则为 64。
bitCount
public static int bitCount(long i)
返回指定 long 值的二进制补码表示中的一位数。 这个函数有时被称为人口计数。
参数:
参数名称 | 参数描述 |
---|---|
i | 要计算其位的值 |
返回:
指定 long 值的二进制补码表示中的一位数。
rotateLeft
public static long rotateLeft(long i, int distance)
返回通过将指定长整型值的二进制补码表示形式向左旋转指定位数而获得的值。 (位移出左侧,或高位,右侧重新进入,或低位。)
请注意,负距离的左旋转等效于右旋转:rotateLeft(val, -distance) == rotateRight(val, distance)。 另请注意,任何 64 倍数的旋转都是无操作的,因此可以忽略旋转距离的最后六位以外的所有位,即使距离为负:rotateLeft(val, distance) == rotateLeft(val, distance & 0x3F)。
参数:
参数名称 | 参数描述 |
---|---|
i | 其位要左移的值 |
distance | 向左旋转的位数 |
返回:
通过将指定的 long 值的二进制补码表示形式向左旋转指定位数而获得的值。
rotateRight
public static long rotateRight(long i, int distance)
返回通过将指定 long 值的二进制补码表示向右旋转指定位数获得的值。 (位移出右手,或低位,左侧重新进入,或高位。)
请注意,负距离的右旋转相当于左旋转:rotateRight(val, -distance) == rotateLeft(val, distance)。 另请注意,任何 64 倍数的旋转都是无操作的,因此可以忽略旋转距离的最后六位以外的所有位,即使距离为负:rotateRight(val, distance) == rotateRight(val, distance & 0x3F)。
参数:
参数名称 | 参数描述 |
---|---|
i | 其位要右移的值 |
distance | 向右旋转的位数 |
返回:
通过将指定 long 值的二进制补码表示右移指定位数获得的值。
reverse
public static long reverse(long i)
返回通过反转指定 long 值的二进制补码表示中的位顺序获得的值。
参数:
参数名称 | 参数描述 |
---|---|
i | 要反转的值 |
返回:
通过反转指定 long 值中位的顺序获得的值。
signum
public static int signum(long i)
返回指定 long 值的符号函数。 (如果指定值为负,则返回值为 -1;如果指定值为 0,则返回 0;如果指定值为正,则返回 1。)
参数:
参数名称 | 参数描述 |
---|---|
i | 要计算其符号的值 |
返回:
指定 long 值的符号函数。
reverseBytes
public static long reverseBytes(long i)
返回通过反转指定 long 值的二进制补码表示中的字节顺序获得的值。
参数:
参数名称 | 参数描述 |
---|---|
i | 要反转其字节的值 |
返回:
通过反转指定 long 值中的字节获得的值。
sum
public static long sum(long a, long b)
根据 + 运算符将两个 long 值相加。
参数:
参数名称 | 参数描述 |
---|---|
a | 第一个操作数 |
b | 第二个操作数 |
返回:
a 和 b 之和
max
public static long max(long a, long b)
返回两个 long 值中的较大者,就像调用 Math#max(long, long) 一样。
参数:
参数名称 | 参数描述 |
---|---|
a | 第一个操作数 |
b | 第二个操作数 |
返回:
a 和 b 中的较大者
min
public static long min(long a, long b)
返回两个 long 值中较小的一个,就像调用 Math#min(long, long) 一样。
参数:
参数名称 | 参数描述 |
---|---|
a | 第一个操作数 |
b | 第二个操作数 |
返回:
a 和 b 中较小的一个