Save This Page
Home » openjdk-7 » java » lang » [javadoc | source]
java.lang
public final class: Long [javadoc | source]
java.lang.Object
   java.lang.Number
      java.lang.Long

All Implemented Interfaces:
    Comparable, Serializable

The {@code Long} class wraps a value of the primitive type {@code long} in an object. An object of type {@code Long} contains a single field whose type is {@code long}.

In addition, this class provides several methods for converting a {@code long} to a {@code String} and a {@code String} to a {@code long}, as well as other constants and methods useful when dealing with a {@code long}.

Implementation note: The implementations of the "bit twiddling" methods (such as highestOneBit and numberOfTrailingZeros ) are based on material from Henry S. Warren, Jr.'s Hacker's Delight, (Addison Wesley, 2002).

Field Summary
public static final  long MIN_VALUE    A constant holding the minimum value a {@code long} can have, -263
public static final  long MAX_VALUE    A constant holding the maximum value a {@code long} can have, 263-1. 
public static final  Class<Long> TYPE    The {@code Class} instance representing the primitive type {@code long}.
    since: JDK1.1 -
 
public static final  int SIZE    The number of bits used to represent a {@code long} value in two's complement binary form.
    since: 1.5 -
 
Constructor:
 public Long(long value) 
 public Long(String s) throws NumberFormatException 
    Constructs a newly allocated {@code Long} object that represents the {@code long} value indicated by the {@code String} parameter. The string is converted to a {@code long} value in exactly the manner used by the {@code parseLong} method for radix 10.
    Parameters:
    s - the {@code String} to be converted to a {@code Long}.
    Throws:
    NumberFormatException - if the {@code String} does not contain a parsable {@code long}.
    Also see:
    java.lang.Long#parseLong(java.lang.String, int)
Method from java.lang.Long Summary:
bitCount,   byteValue,   compare,   compareTo,   decode,   doubleValue,   equals,   floatValue,   getChars,   getLong,   getLong,   getLong,   hashCode,   highestOneBit,   intValue,   longValue,   lowestOneBit,   numberOfLeadingZeros,   numberOfTrailingZeros,   parseLong,   parseLong,   reverse,   reverseBytes,   rotateLeft,   rotateRight,   shortValue,   signum,   stringSize,   toBinaryString,   toHexString,   toOctalString,   toString,   toString,   toString,   valueOf,   valueOf,   valueOf
Methods from java.lang.Number:
byteValue,   doubleValue,   floatValue,   intValue,   longValue,   shortValue
Methods from java.lang.Object:
clone,   equals,   finalize,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from java.lang.Long Detail:
 public static int bitCount(long i) 
    Returns the number of one-bits in the two's complement binary representation of the specified {@code long} value. This function is sometimes referred to as the population count.
 public byte byteValue() 
    Returns the value of this {@code Long} as a {@code byte}.
 public static int compare(long x,
    long y) 
    Compares two {@code long} values numerically. The value returned is identical to what would be returned by:
       Long.valueOf(x).compareTo(Long.valueOf(y))
    
 public int compareTo(Long anotherLong) 
    Compares two {@code Long} objects numerically.
 public static Long decode(String nm) throws NumberFormatException 
    Decodes a {@code String} into a {@code Long}. Accepts decimal, hexadecimal, and octal numbers given by the following grammar:
    DecodableString:
    Signopt DecimalNumeral
    Signopt {@code 0x} HexDigits
    Signopt {@code 0X} HexDigits
    Signopt {@code #} HexDigits
    Signopt {@code 0} OctalDigits

    Sign:
    {@code -}
    {@code +}
    DecimalNumeral, HexDigits, and OctalDigits are as defined in section 3.10.1 of The Java™ Language Specification, except that underscores are not accepted between digits.

    The sequence of characters following an optional sign and/or radix specifier ("{@code 0x}", "{@code 0X}", "{@code #}", or leading zero) is parsed as by the {@code Long.parseLong} method with the indicated radix (10, 16, or 8). This sequence of characters must represent a positive value or a NumberFormatException will be thrown. The result is negated if first character of the specified {@code String} is the minus sign. No whitespace characters are permitted in the {@code String}.

 public double doubleValue() 
    Returns the value of this {@code Long} as a {@code double}.
 public boolean equals(Object obj) 
    Compares this object to the specified object. The result is {@code true} if and only if the argument is not {@code null} and is a {@code Long} object that contains the same {@code long} value as this object.
 public float floatValue() 
    Returns the value of this {@code Long} as a {@code float}.
 static  void getChars(long i,
    int index,
    char[] buf) 
    Places characters representing the integer i into the character array buf. The characters are placed into the buffer backwards starting with the least significant digit at the specified index (exclusive), and working backwards from there. Will fail if i == Long.MIN_VALUE
 public static Long getLong(String nm) 
    Determines the {@code long} value of the system property with the specified name.

    The first argument is treated as the name of a system property. System properties are accessible through the java.lang.System#getProperty(java.lang.String) method. The string value of this property is then interpreted as a {@code long} value and a {@code Long} object representing this value is returned. Details of possible numeric formats can be found with the definition of {@code getProperty}.

    If there is no property with the specified name, if the specified name is empty or {@code null}, or if the property does not have the correct numeric format, then {@code null} is returned.

    In other words, this method returns a {@code Long} object equal to the value of:

    {@code getLong(nm, null)}
 public static Long getLong(String nm,
    long val) 
    Determines the {@code long} value of the system property with the specified name.

    The first argument is treated as the name of a system property. System properties are accessible through the java.lang.System#getProperty(java.lang.String) method. The string value of this property is then interpreted as a {@code long} value and a {@code Long} object representing this value is returned. Details of possible numeric formats can be found with the definition of {@code getProperty}.

    The second argument is the default value. A {@code Long} object that represents the value of the second argument is returned if there is no property of the specified name, if the property does not have the correct numeric format, or if the specified name is empty or null.

    In other words, this method returns a {@code Long} object equal to the value of:

    {@code getLong(nm, new Long(val))}
    but in practice it may be implemented in a manner such as:
    Long result = getLong(nm, null);
    return (result == null) ? new Long(val) : result;
    
    to avoid the unnecessary allocation of a {@code Long} object when the default value is not needed.
 public static Long getLong(String nm,
    Long val) 
    Returns the {@code long} value of the system property with the specified name. The first argument is treated as the name of a system property. System properties are accessible through the java.lang.System#getProperty(java.lang.String) method. The string value of this property is then interpreted as a {@code long} value, as per the {@code Long.decode} method, and a {@code Long} object representing this value is returned.
    • If the property value begins with the two ASCII characters {@code 0x} or the ASCII character {@code #}, not followed by a minus sign, then the rest of it is parsed as a hexadecimal integer exactly as for the method #valueOf(java.lang.String, int) with radix 16.
    • If the property value begins with the ASCII character {@code 0} followed by another character, it is parsed as an octal integer exactly as by the method #valueOf(java.lang.String, int) with radix 8.
    • Otherwise the property value is parsed as a decimal integer exactly as by the method #valueOf(java.lang.String, int) with radix 10.

    Note that, in every case, neither {@code L} ('\u004C') nor {@code l} ('\u006C') is permitted to appear at the end of the property value as a type indicator, as would be permitted in Java programming language source code.

    The second argument is the default value. The default value is returned if there is no property of the specified name, if the property does not have the correct numeric format, or if the specified name is empty or {@code null}.

 public int hashCode() 
    Returns a hash code for this {@code Long}. The result is the exclusive OR of the two halves of the primitive {@code long} value held by this {@code Long} object. That is, the hashcode is the value of the expression:
    {@code (int)(this.longValue()^(this.longValue()>>>32))}
 public static long highestOneBit(long i) 
    Returns a {@code long} value with at most a single one-bit, in the position of the highest-order ("leftmost") one-bit in the specified {@code long} value. Returns zero if the specified value has no one-bits in its two's complement binary representation, that is, if it is equal to zero.
 public int intValue() 
    Returns the value of this {@code Long} as an {@code int}.
 public long longValue() 
    Returns the value of this {@code Long} as a {@code long} value.
 public static long lowestOneBit(long i) 
    Returns a {@code long} value with at most a single one-bit, in the position of the lowest-order ("rightmost") one-bit in the specified {@code long} value. Returns zero if the specified value has no one-bits in its two's complement binary representation, that is, if it is equal to zero.
 public static int numberOfLeadingZeros(long i) 
    Returns the number of zero bits preceding the highest-order ("leftmost") one-bit in the two's complement binary representation of the specified {@code long} value. Returns 64 if the specified value has no one-bits in its two's complement representation, in other words if it is equal to zero.

    Note that this method is closely related to the logarithm base 2. For all positive {@code long} values x:

    • floor(log2(x)) = {@code 63 - numberOfLeadingZeros(x)}
    • ceil(log2(x)) = {@code 64 - numberOfLeadingZeros(x - 1)}
 public static int numberOfTrailingZeros(long i) 
    Returns the number of zero bits following the lowest-order ("rightmost") one-bit in the two's complement binary representation of the specified {@code long} value. Returns 64 if the specified value has no one-bits in its two's complement representation, in other words if it is equal to zero.
 public static long parseLong(String s) throws NumberFormatException 
    Parses the string argument as a signed decimal {@code long}. The characters in the string must all be decimal digits, except that the first character may be an ASCII minus sign {@code '-'} (\u002D') to indicate a negative value or an ASCII plus sign {@code '+'} ('\u002B') to indicate a positive value. The resulting {@code long} value is returned, exactly as if the argument and the radix {@code 10} were given as arguments to the #parseLong(java.lang.String, int) method.

    Note that neither the character {@code L} ('\u004C') nor {@code l} ('\u006C') is permitted to appear at the end of the string as a type indicator, as would be permitted in Java programming language source code.

 public static long parseLong(String s,
    int radix) throws NumberFormatException 
    Parses the string argument as a signed {@code long} in the radix specified by the second argument. The characters in the string must all be digits of the specified radix (as determined by whether java.lang.Character#digit(char, int) returns a nonnegative value), except that the first character may be an ASCII minus sign {@code '-'} ('\u002D') to indicate a negative value or an ASCII plus sign {@code '+'} ('\u002B') to indicate a positive value. The resulting {@code long} value is returned.

    Note that neither the character {@code L} ('\u004C') nor {@code l} ('\u006C') is permitted to appear at the end of the string as a type indicator, as would be permitted in Java programming language source code - except that either {@code L} or {@code l} may appear as a digit for a radix greater than 22.

    An exception of type {@code NumberFormatException} is thrown if any of the following situations occurs:

    • The first argument is {@code null} or is a string of length zero.
    • The {@code radix} is either smaller than java.lang.Character#MIN_RADIX or larger than java.lang.Character#MAX_RADIX .
    • Any character of the string is not a digit of the specified radix, except that the first character may be a minus sign {@code '-'} ('\u002d') or plus sign {@code '+'} ('\u002B') provided that the string is longer than length 1.
    • The value represented by the string is not a value of type {@code long}.

    Examples:

    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
    
 public static long reverse(long i) 
    Returns the value obtained by reversing the order of the bits in the two's complement binary representation of the specified {@code long} value.
 public static long reverseBytes(long i) 
    Returns the value obtained by reversing the order of the bytes in the two's complement representation of the specified {@code long} value.
 public static long rotateLeft(long i,
    int distance) 
    Returns the value obtained by rotating the two's complement binary representation of the specified {@code long} value left by the specified number of bits. (Bits shifted out of the left hand, or high-order, side reenter on the right, or low-order.)

    Note that left rotation with a negative distance is equivalent to right rotation: {@code rotateLeft(val, -distance) == rotateRight(val, distance)}. Note also that rotation by any multiple of 64 is a no-op, so all but the last six bits of the rotation distance can be ignored, even if the distance is negative: {@code rotateLeft(val, distance) == rotateLeft(val, distance & 0x3F)}.

 public static long rotateRight(long i,
    int distance) 
    Returns the value obtained by rotating the two's complement binary representation of the specified {@code long} value right by the specified number of bits. (Bits shifted out of the right hand, or low-order, side reenter on the left, or high-order.)

    Note that right rotation with a negative distance is equivalent to left rotation: {@code rotateRight(val, -distance) == rotateLeft(val, distance)}. Note also that rotation by any multiple of 64 is a no-op, so all but the last six bits of the rotation distance can be ignored, even if the distance is negative: {@code rotateRight(val, distance) == rotateRight(val, distance & 0x3F)}.

 public short shortValue() 
    Returns the value of this {@code Long} as a {@code short}.
 public static int signum(long i) 
    Returns the signum function of the specified {@code long} value. (The return value is -1 if the specified value is negative; 0 if the specified value is zero; and 1 if the specified value is positive.)
 static int stringSize(long x) 
 public static String toBinaryString(long i) 
    Returns a string representation of the {@code long} argument as an unsigned integer in base 2.

    The unsigned {@code long} value is the argument plus 264 if the argument is negative; otherwise, it is equal to the argument. This value is converted to a string of ASCII digits in binary (base 2) with no extra leading {@code 0}s. If the unsigned magnitude is zero, it is represented by a single zero character {@code '0'} ('\u0030'); otherwise, the first character of the representation of the unsigned magnitude will not be the zero character. The characters {@code '0'} ('\u0030') and {@code '1'} ('\u0031') are used as binary digits.

 public static String toHexString(long i) 
    Returns a string representation of the {@code long} argument as an unsigned integer in base 16.

    The unsigned {@code long} value is the argument plus 264 if the argument is negative; otherwise, it is equal to the argument. This value is converted to a string of ASCII digits in hexadecimal (base 16) with no extra leading {@code 0}s. If the unsigned magnitude is zero, it is represented by a single zero character {@code '0'} ('\u0030'); otherwise, the first character of the representation of the unsigned magnitude will not be the zero character. The following characters are used as hexadecimal digits:

    {@code 0123456789abcdef}
    These are the characters '\u0030' through '\u0039' and '\u0061' through '\u0066'. If uppercase letters are desired, the java.lang.String#toUpperCase() method may be called on the result:
    {@code Long.toHexString(n).toUpperCase()}
 public static String toOctalString(long i) 
    Returns a string representation of the {@code long} argument as an unsigned integer in base 8.

    The unsigned {@code long} value is the argument plus 264 if the argument is negative; otherwise, it is equal to the argument. This value is converted to a string of ASCII digits in octal (base 8) with no extra leading {@code 0}s.

    If the unsigned magnitude is zero, it is represented by a single zero character {@code '0'} ('\u0030'); otherwise, the first character of the representation of the unsigned magnitude will not be the zero character. The following characters are used as octal digits:

    {@code 01234567}
    These are the characters '\u0030' through '\u0037'.
 public String toString() 
    Returns a {@code String} object representing this {@code Long}'s value. The value is converted to signed decimal representation and returned as a string, exactly as if the {@code long} value were given as an argument to the java.lang.Long#toString(long) method.
 public static String toString(long i) 
    Returns a {@code String} object representing the specified {@code long}. The argument is converted to signed decimal representation and returned as a string, exactly as if the argument and the radix 10 were given as arguments to the #toString(long, int) method.
 public static String toString(long i,
    int radix) 
    Returns a string representation of the first argument in the radix specified by the second argument.

    If the radix is smaller than {@code Character.MIN_RADIX} or larger than {@code Character.MAX_RADIX}, then the radix {@code 10} is used instead.

    If the first argument is negative, the first element of the result is the ASCII minus sign {@code '-'} ('\u002d'). If the first argument is not negative, no sign character appears in the result.

    The remaining characters of the result represent the magnitude of the first argument. If the magnitude is zero, it is represented by a single zero character {@code '0'} ('\u0030'); otherwise, the first character of the representation of the magnitude will not be the zero character. The following ASCII characters are used as digits:

    {@code 0123456789abcdefghijklmnopqrstuvwxyz}
    These are '\u0030' through '\u0039' and '\u0061' through '\u007a'. If {@code radix} is N, then the first N of these characters are used as radix-N digits in the order shown. Thus, the digits for hexadecimal (radix 16) are {@code 0123456789abcdef}. If uppercase letters are desired, the java.lang.String#toUpperCase() method may be called on the result:
    {@code Long.toString(n, 16).toUpperCase()}
 public static Long valueOf(String s) throws NumberFormatException 
    Returns a {@code Long} object holding the value of the specified {@code String}. The argument is interpreted as representing a signed decimal {@code long}, exactly as if the argument were given to the #parseLong(java.lang.String) method. The result is a {@code Long} object that represents the integer value specified by the string.

    In other words, this method returns a {@code Long} object equal to the value of:

    {@code new Long(Long.parseLong(s))}
 public static Long valueOf(long l) 
    Returns a {@code Long} instance representing the specified {@code long} value. If a new {@code Long} instance is not required, this method should generally be used in preference to the constructor #Long(long) , as this method is likely to yield significantly better space and time performance by caching frequently requested values. Note that unlike the {@linkplain Integer#valueOf(int) corresponding method} in the {@code Integer} class, this method is not required to cache values within a particular range.
 public static Long valueOf(String s,
    int radix) throws NumberFormatException 
    Returns a {@code Long} object holding the value extracted from the specified {@code String} when parsed with the radix given by the second argument. The first argument is interpreted as representing a signed {@code long} in the radix specified by the second argument, exactly as if the arguments were given to the #parseLong(java.lang.String, int) method. The result is a {@code Long} object that represents the {@code long} value specified by the string.

    In other words, this method returns a {@code Long} object equal to the value of:

    {@code new Long(Long.parseLong(s, radix))}