Module java.base
Package java.lang

Class Integer

所有已实现的接口:
Serializable, Comparable<Integer>, Constable, ConstantDesc

public final class Integer extends Number implements Comparable<Integer>, Constable, ConstantDesc
Integer类将基本类型int的值包装在对象中。类型为Integer的对象包含一个类型为int的字段。

此外,该类提供了几种方法,用于将int转换为String,将String转换为int,以及在处理int时使用的其他常量和方法。

这是一个基于值的类;程序员应将相等的实例视为可互换的,并且不应将实例用于同步,否则可能会发生不可预测的行为。例如,在将来的版本中,同步可能会失败。

实现注意事项:"位操作"方法(例如highestOneBitnumberOfTrailingZeros)的实现基于Henry S. Warren, Jr.的《Hacker's Delight》(Addison Wesley, 2002)中的材料。

自:
1.0
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    用于以二进制补码形式表示int值所使用的字节数。
    static final int
    一个常量,表示int可以具有的最大值,即231-1。
    static final int
    一个常量,表示int可以具有的最小值,即-231
    static final int
    用于以二进制补码形式表示int值所使用的位数。
    static final Class<Integer>
    表示原始类型intClass实例。
  • Constructor Summary

    Constructors
    Constructor
    Description
    Integer(int value)
    已弃用,将来会移除:此API元素可能会在将来的版本中被移除。
    很少适合使用此构造函数。
    已弃用,将来会移除:此API元素可能会在将来的版本中被移除。
    很少适合使用此构造函数。
  • Method Summary

    Modifier and Type
    Method
    Description
    static int
    bitCount(int i)
    返回指定int值的二进制补码表示中的一位比特数。
    byte
    在缩小的原始转换后,将此Integer的值作为byte返回。
    static int
    compare(int x, int y)
    按数字比较两个int值。
    int
    compareTo(Integer anotherInteger)
    按数字比较两个Integer对象。
    static int
    compareUnsigned(int x, int y)
    按无符号方式数字比较两个int值。
    static int
    compress(int i, int mask)
    根据指定的位掩码,返回压缩指定inti的位的值。
    static Integer
    decode(String nm)
    String解码为Integer
    返回包含此实例的名义描述符的Optional,即实例本身。
    static int
    divideUnsigned(int dividend, int divisor)
    返回将第一个参数除以第二个参数的无符号商,其中每个参数和结果都被解释为无符号值。
    double
    在扩展的原始转换后,将此Integer的值作为double返回。
    boolean
    equals(Object obj)
    将此对象与指定对象进行比较。
    static int
    expand(int i, int mask)
    根据指定的位掩码,返回扩展指定inti的位的值。
    float
    在扩展的原始转换后,将此Integer的值作为float返回。
    static Integer
    确定具有指定名称的系统属性的整数值。
    static Integer
    getInteger(String nm, int val)
    确定具有指定名称的系统属性的整数值。
    static Integer
    返回具有指定名称的系统属性的整数值。
    int
    返回此Integer的哈希码。
    static int
    hashCode(int value)
    返回int值的哈希码;与Integer.hashCode()兼容。
    static int
    highestOneBit(int i)
    返回具有最多单个一位比特的int值,位于指定int值中最高位(“最左侧”)的位置。
    int
    在扩展的原始转换后,将此Integer的值作为int返回。
    long
    在扩展的原始转换后,将此Integer的值作为long返回。
    static int
    lowestOneBit(int i)
    返回具有最多单个一位比特的int值,位于指定int值中最低位(“最右侧”)的位置。
    static int
    max(int a, int b)
    返回两个int值中较大的值,如通过调用Math.max
    static int
    min(int a, int b)
    返回两个int值中较小的值,如通过调用Math.min
    static int
    返回指定int值的二进制补码表示中最高位(“最左侧”)一位比特之前的零位数。
    static int
    返回指定int值的二进制补码表示中最低位(“最右侧”)一位比特之后的零位数。
    static int
    parseInt(CharSequence s, int beginIndex, int endIndex, int radix)
    CharSequence参数解析为指定radix中的有符号int,从指定的beginIndex开始,延伸到endIndex - 1
    static int
    将字符串参数解析为有符号十进制整数。
    static int
    parseInt(String s, int radix)
    将字符串参数解析为由第二个参数指定的基数中的有符号整数。
    static int
    parseUnsignedInt(CharSequence s, int beginIndex, int endIndex, int radix)
    CharSequence参数解析为指定radix中的无符号int,从指定的beginIndex开始,延伸到endIndex - 1
    static int
    将字符串参数解析为无符号十进制整数。
    static int
    parseUnsignedInt(String s, int radix)
    将字符串参数解析为由第二个参数指定的基数中的无符号整数。
    static int
    remainderUnsigned(int dividend, int divisor)
    返回将第一个参数除以第二个参数的无符号余数,其中每个参数和结果都被解释为无符号值。
    将此实例解析为ConstantDesc,其结果是实例本身。
    static int
    reverse(int i)
    返回指定int值的二进制补码表示中位的顺序颠倒后的值。
    static int
    reverseBytes(int i)
    返回指定int值的二进制补码表示中字节的顺序颠倒后的值。
    static int
    rotateLeft(int i, int distance)
    返回将指定int值的二进制补码表示左移指定位数后的值。
    static int
    rotateRight(int i, int distance)
    返回将指定int值的二进制补码表示右移指定位数后的值。
    short
    在缩小的原始转换后,将此Integer的值作为short返回。
    static int
    signum(int i)
    返回指定int值的符号函数。
    static int
    sum(int a, int b)
    将两个整数相加,如+运算符所示。
    static String
    toBinaryString(int i)
    返回整数参数的字符串表示作为二进制中的无符号整数。
    static String
    toHexString(int i)
    返回整数参数的字符串表示作为十六进制中的无符号整数。
    static String
    toOctalString(int i)
    返回整数参数的字符串表示作为八进制中的无符号整数。
    返回表示此Integer值的String对象。
    static String
    toString(int i)
    返回表示指定整数的String对象。
    static String
    toString(int i, int radix)
    返回第一个参数的字符串表示,其基数由第二个参数指定。
    static long
    toUnsignedLong(int x)
    通过无符号转换将参数转换为long
    static String
    返回参数的字符串表示作为无符号十进制值。
    static String
    toUnsignedString(int i, int radix)
    返回第一个参数的字符串表示作为由第二个参数指定的基数中的无符号整数值。
    static Integer
    valueOf(int i)
    返回表示指定int值的Integer实例。
    static Integer
    返回包含指定String值的Integer对象。
    static Integer
    valueOf(String s, int radix)
    返回包含通过由第二个参数给定的基数解析的String中提取的值的Integer对象。

    Methods declared in class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • MIN_VALUE

      @Native public static final int MIN_VALUE
      一个常量,表示int可以具有的最小值,即-231
      参见:
    • MAX_VALUE

      @Native public static final int MAX_VALUE
      一个常量,表示int可以具有的最大值,即231-1。
      参见:
    • TYPE

      public static final Class<Integer> TYPE
      表示原始类型intClass实例。
      自:
      1.1
    • SIZE

      @Native public static final int SIZE
      用于以二进制补码形式表示int值所使用的位数。
      自:
      1.5
      参见:
    • BYTES

      public static final int BYTES
      表示以二进制补码形式表示一个int值所需的字节数。
      自从:
      1.8
      另请参见:
  • Constructor Details

    • Integer

      @Deprecated(since="9", forRemoval=true) public Integer(int value)
      Deprecated, for removal: This API element is subject to removal in a future version.
      It is rarely appropriate to use this constructor. The static factory valueOf(int) is generally a better choice, as it is likely to yield significantly better space and time performance.
      构造一个新分配的Integer对象,该对象表示指定的int值。
      参数:
      value - 要由Integer对象表示的值。
    • Integer

      @Deprecated(since="9", forRemoval=true) public Integer(String s) throws NumberFormatException
      Deprecated, for removal: This API element is subject to removal in a future version.
      It is rarely appropriate to use this constructor. Use parseInt(String) to convert a string to a int primitive, or use valueOf(String) to convert a string to an Integer object.
      构造一个新分配的Integer对象,该对象表示由String参数指示的int值。该字符串以与parseInt方法在基数10下使用的方式精确转换为int值。
      参数:
      s - 要转换为IntegerString
      抛出:
      NumberFormatException - 如果String不包含可解析的整数。
  • Method Details

    • toString

      public static String toString(int i, int radix)
      返回第一个参数在由第二个参数指定的基数中的字符串表示形式。

      如果基数小于Character.MIN_RADIX或大于Character.MAX_RADIX,则使用基数10代替。

      如果第一个参数为负数,则结果的第一个元素是ASCII减号字符'-''\u002D')。如果第一个参数不为负数,则结果中不会出现符号字符。

      结果的其余字符表示第一个参数的大小。如果大小为零,则由单个零字符'0''\u0030')表示;否则,大小的表示的第一个字符将不是零字符。以下ASCII字符用作数字:

      0123456789abcdefghijklmnopqrstuvwxyz
      这些是'\u0030''\u0039''\u0061''\u007A'。如果radixN,则这些字符的前N个将按照所示的顺序用作基数-N数字。因此,十六进制(基数16)的数字为0123456789abcdef。如果需要大写字母,则可以在结果上调用String.toUpperCase()方法:
      Integer.toString(n, 16).toUpperCase()
      参数:
      i - 要转换为字符串的整数。
      radix - 在字符串表示中使用的基数。
      返回:
      指定基数中参数的字符串表示。
      另请参见:
    • toUnsignedString

      public static String toUnsignedString(int i, int radix)
      返回第一个参数作为无符号整数值在由第二个参数指定的基数中的字符串表示形式。

      如果基数小于Character.MIN_RADIX或大于Character.MAX_RADIX,则使用基数10代替。

      请注意,由于第一个参数被视为无符号值,因此不会打印前导符号字符。

      如果大小为零,则由单个零字符'0''\u0030')表示;否则,无符号大小的表示的第一个字符将不是零字符。

      基数和用作数字的字符的行为与toString相同。

      参数:
      i - 要转换为无符号字符串的整数。
      radix - 在字符串表示中使用的基数。
      返回:
      参数在指定基数中的无符号字符串表示。
      自从:
      1.8
      另请参见:
    • toHexString

      public static String toHexString(int i)
      返回整数参数作为十六进制无符号整数的字符串表示形式。

      如果参数为负数,则无符号整数值为参数加232;否则,它等于参数。该值转换为十六进制(基数16)的ASCII数字字符串,没有额外的前导0

      可以通过调用Integer.parseUnsignedInt(s, 16)从返回的字符串s中恢复参数的值。

      如果无符号大小为零,则由单个零字符'0''\u0030')表示;否则,无符号大小的表示的第一个字符将不是零字符。以下字符用作十六进制数字:

      0123456789abcdef
      这些是字符'\u0030''\u0039''\u0061''\u0066'。如果需要大写字母,则可以在结果上调用String.toUpperCase()方法:
      Integer.toHexString(n).toUpperCase()
      API注释:
      HexFormat类提供格式化和解析字节数组和基本类型以返回字符串或添加到Appendable的功能。 HexFormat格式化和解析大写或小写十六进制字符,带有前导零,并且对于字节数组,为每个字节包括分隔符、前缀和后缀。
      参数:
      i - 要转换为字符串的整数。
      返回:
      参数在十六进制(基数16)中表示的无符号整数值的字符串表示。
      自从:
      1.0.2
      另请参见:
    • toOctalString

      public static String toOctalString(int i)
      返回整数参数作为八进制无符号整数的字符串表示形式。

      如果参数为负数,则无符号整数值为参数加232;否则,它等于参数。该值转换为八进制(基数8)的ASCII数字字符串,没有额外的前导0

      可以通过调用Integer.parseUnsignedInt(s, 8)从返回的字符串s中恢复参数的值。

      如果无符号大小为零,则由单个零字符'0''\u0030')表示;否则,无符号大小的表示的第一个字符将不是零字符。以下字符用作八进制数字:

      01234567
      这些是字符'\u0030''\u0037'
      参数:
      i - 要转换为字符串的整数。
      返回:
      参数在八进制(基数8)中表示的无符号整数值的字符串表示。
      自从:
      1.0.2
      另请参见:
    • toBinaryString

      public static String toBinaryString(int i)
      返回整数参数作为二进制无符号整数的字符串表示形式。

      如果参数为负数,则无符号整数值为参数加232;否则,它等于参数。该值转换为二进制(基数2)的ASCII数字字符串,没有额外的前导0

      可以通过调用Integer.parseUnsignedInt(s, 2)从返回的字符串s中恢复参数的值。

      如果无符号大小为零,则由单个零字符'0''\u0030')表示;否则,无符号大小的表示的第一个字符将不是零字符。字符'0''\u0030')和 '1''\u0031')用作二进制数字。

      参数:
      i - 要转换为字符串的整数。
      返回:
      参数在二进制(基数2)中表示的无符号整数值的字符串表示。
      自从:
      1.0.2
      另请参见:
    • toString

      public static String toString(int i)
      返回表示指定整数的String对象。参数被转换为有符号十进制表示,并作为字符串返回,就好像参数和基数10作为参数传递给toString(int, int)方法一样。
      参数:
      i - 要转换的整数。
      返回:
      参数的十进制(基数10)的字符串表示。
    • toUnsignedString

      public static String toUnsignedString(int i)
      返回参数作为无符号十进制值的字符串表示。参数被转换为无符号十进制表示,并作为字符串返回,就好像参数和基数10作为参数传递给toUnsignedString(int, int)方法一样。
      参数:
      i - 要转换为无符号字符串的整数。
      返回:
      参数的无符号字符串表示。
      自从:
      1.8
      另请参见:
    • parseInt

      public static int parseInt(String s, int radix) throws NumberFormatException
      解析第二个参数指定的基数中的字符串参数作为有符号整数。字符串中的字符必须都是指定基数的数字(由Character.digit(char, int)返回非负值确定),除非第一个字符是ASCII减号'-''\u002D')表示负值或ASCII加号'+''\u002B')表示正值。返回结果整数值。

      如果出现以下任何情况,则抛出NumberFormatException类型的异常:

      • 第一个参数为null或长度为零的字符串。
      • 基数小于Character.MIN_RADIX或大于Character.MAX_RADIX
      • 字符串的任何字符不是指定基数的数字,除非第一个字符是减号'-''\u002D')或加号'+''\u002B'),前提是字符串长度大于1。
      • 字符串表示的值不是int类型的值。

      示例:

       parseInt("0", 10) 返回 0
       parseInt("473", 10) 返回 473
       parseInt("+42", 10) 返回 42
       parseInt("-0", 10) 返回 0
       parseInt("-FF", 16) 返回 -255
       parseInt("1100110", 2) 返回 102
       parseInt("2147483647", 10) 返回 2147483647
       parseInt("-2147483648", 10) 返回 -2147483648
       parseInt("2147483648", 10) 抛出NumberFormatException
       parseInt("99", 8) 抛出NumberFormatException
       parseInt("Kona", 10) 抛出NumberFormatException
       parseInt("Kona", 27) 返回 411787
       
      参数:
      s - 包含要解析的整数表示的String
      radix - 在解析s时要使用的基数。
      返回:
      在指定基数中表示的字符串参数的整数。
      抛出:
      NumberFormatException - 如果String不包含可解析的int
    • parseInt

      public static int parseInt(CharSequence s, int beginIndex, int endIndex, int radix) throws NumberFormatException
      将指定的radix中的CharSequence参数解析为有符号int,从指定的beginIndex开始,一直到endIndex - 1

      该方法不会防止在解析过程中对CharSequence进行更改。

      参数:
      s - 包含要解析的int表示的CharSequence
      beginIndex - 起始索引(包括)。
      endIndex - 结束索引(不包括)。
      radix - 在解析s时要使用的基数。
      返回:
      在指定基数中表示的子序列的有符号int
      抛出:
      NullPointerException - 如果s为null。
      IndexOutOfBoundsException - 如果beginIndex为负数,或者如果beginIndex大于endIndex,或者如果endIndex大于s.length()
      NumberFormatException - 如果CharSequence不包含指定radix中可解析的无符号int,或者如果radix小于Character.MIN_RADIX或大于Character.MAX_RADIX
      自:
      9
    • parseInt

      public static int parseInt(String s) throws NumberFormatException
      将字符串参数解析为有符号十进制整数。字符串中的字符必须都是十进制数字,除非第一个字符是ASCII减号'-''\u002D')表示负值或ASCII加号'+''\u002B')表示正值。返回结果整数值,就像将参数和基数10作为参数传递给parseInt(java.lang.String, int)方法一样。
      参数:
      s - 包含要解析的int表示的String
      返回:
      十进制中表示的参数的整数值。
      抛出:
      NumberFormatException - 如果字符串不包含可解析的整数。
    • parseUnsignedInt

      public static int parseUnsignedInt(String s, int radix) throws NumberFormatException
      将第二个参数指定的基数中的字符串参数解析为无符号整数。无符号整数将通常与负数相关联的值映射为大于MAX_VALUE的正数。字符串中的字符必须都是指定基数的数字(由Character.digit(char, int)返回非负值),除非第一个字符是ASCII加号'+''\u002B')。返回结果整数值。

      如果出现以下任何情况,则抛出NumberFormatException类型的异常:

      • 第一个参数为null或长度为零的字符串。
      • 基数小于Character.MIN_RADIX或大于Character.MAX_RADIX
      • 字符串的任何字符不是指定基数的数字,除非第一个字符是加号'+''\u002B'),前提是字符串长度大于1。
      • 字符串表示的值大于最大无符号int,即232-1。
      参数:
      s - 包含要解析的无符号整数表示的String
      radix - 在解析s时要使用的基数。
      返回:
      在指定基数中表示的字符串参数的整数。
      抛出:
      NumberFormatException - 如果String不包含可解析的int
      自:
      1.8
    • parseUnsignedInt

      public static int parseUnsignedInt(CharSequence s, int beginIndex, int endIndex, int radix) throws NumberFormatException
      将指定的radix中的CharSequence参数解析为无符号int,从指定的beginIndex开始,一直到endIndex - 1

      该方法不会防止在解析过程中对CharSequence进行更改。

      参数:
      s - 包含要解析的无符号int表示的CharSequence
      beginIndex - 起始索引(包括)。
      endIndex - 结束索引(不包括)。
      radix - 在解析s时要使用的基数。
      返回:
      在指定基数中表示的子序列的无符号int
      抛出:
      NullPointerException - 如果s为null。
      IndexOutOfBoundsException - 如果beginIndex为负数,或者如果beginIndex大于endIndex,或者如果endIndex大于s.length()
      NumberFormatException - 如果CharSequence不包含指定radix中可解析的无符号int,或者如果radix小于Character.MIN_RADIX或大于Character.MAX_RADIX
      自:
      9
    • parseUnsignedInt

      public static int parseUnsignedInt(String s) throws NumberFormatException
      将字符串参数解析为无符号十进制整数。字符串中的字符必须都是十进制数字,除非第一个字符是ASCII加号 '+''\u002B')。返回结果整数值,就像将参数和基数10作为参数传递给parseUnsignedInt(java.lang.String, int)方法一样。
      参数:
      s - 包含要解析的无符号int表示的String
      返回:
      十进制中表示的参数的无符号整数值。
      抛出:
      NumberFormatException - 如果字符串不包含可解析的无符号整数。
      自:
      1.8
    • valueOf

      public static Integer valueOf(String s, int radix) throws NumberFormatException
      返回一个Integer对象,该对象保存使用第二个参数给定的基数解析的指定String中提取的值。第一个参数被解释为表示由第二个参数指定的基数的有符号整数,就像将参数和基数10作为参数传递给parseInt(java.lang.String, int)方法一样。结果是一个表示字符串指定的整数值的Integer对象。

      换句话说,此方法返回等于以下值的Integer对象:

      Integer.valueOf(Integer.parseInt(s, radix))
      参数:
      s - 要解析的字符串。
      radix - 用于解释s的基数
      返回:
      一个Integer对象,其中包含指定基数中表示的字符串参数的值。
      抛出:
      NumberFormatException - 如果String不包含可解析的int
    • valueOf

      public static Integer valueOf(String s) throws NumberFormatException
      返回一个包含指定String值的Integer对象。该参数被解释为表示有符号十进制整数,就像参数被传递给parseInt(java.lang.String)方法一样。结果是一个表示字符串指定的整数值的Integer对象。

      换句话说,该方法返回一个等于以下值的Integer对象:

      Integer.valueOf(Integer.parseInt(s))
      参数:
      s - 要解析的字符串。
      返回:
      包含字符串参数表示的值的Integer对象。
      抛出:
      NumberFormatException - 如果字符串无法解析为整数。
    • valueOf

      public static Integer valueOf(int i)
      返回表示指定int值的Integer实例。如果不需要新的Integer实例,则通常应优先使用此方法,而不是构造函数Integer(int),因为该方法可能通过缓存频繁请求的值而获得显着更好的空间和时间性能。此方法将始终缓存范围在-128到127之间的值,并且可能缓存此范围之外的其他值。
      参数:
      i - 一个int值。
      返回:
      表示iInteger实例。
      自:
      1.5
    • byteValue

      public byte byteValue()
      返回此Integer的值作为缩小的原始转换后的byte
      覆盖:
      byteValue 在类 Number
      返回:
      转换为byte类型后此对象表示的数值。
      参见Java语言规范:
      5.1.3 缩小原始转换
    • shortValue

      public short shortValue()
      返回此Integer的值作为缩小的原始转换后的short
      覆盖:
      shortValue 在类 Number
      返回:
      转换为short类型后此对象表示的数值。
      参见Java语言规范:
      5.1.3 缩小原始转换
    • intValue

      public int intValue()
      返回此Integer的值作为int
      指定者:
      intValue 在类 Number
      返回:
      转换为int类型后此对象表示的数值。
    • longValue

      public long longValue()
      返回此Integer的值作为扩展的原始转换后的long
      指定者:
      longValue 在类 Number
      返回:
      转换为long类型后此对象表示的数值。
      参见Java语言规范:
      5.1.2 扩展原始转换
      另请参见:
    • floatValue

      public float floatValue()
      返回此Integer的值作为扩展的原始转换后的float
      指定者:
      floatValue 在类 Number
      返回:
      转换为float类型后此对象表示的数值。
      参见Java语言规范:
      5.1.2 扩展原始转换
    • doubleValue

      public double doubleValue()
      返回此Integer的值作为扩展的原始转换后的double
      指定者:
      doubleValue 在类 Number
      返回:
      转换为double类型后此对象表示的数值。
      参见Java语言规范:
      5.1.2 扩展原始转换
    • toString

      public String toString()
      返回一个表示此Integer值的String对象。该值被转换为有符号十进制表示,并作为字符串返回,就像将整数值作为参数传递给toString(int)方法一样。
      覆盖:
      toString 在类 Object
      返回:
      以十进制表示的该对象值的字符串表示。
    • hashCode

      public int hashCode()
      返回此Integer的哈希码。
      覆盖:
      hashCode 在类 Object
      返回:
      该对象的哈希码值,等于此Integer对象表示的原始int值。
      参见:
    • hashCode

      public static int hashCode(int value)
      返回一个int值的哈希码;与Integer.hashCode()兼容。
      参数:
      value - 要哈希的值
      返回:
      一个int值的哈希码。
      自:
      1.8
    • equals

      public boolean equals(Object obj)
      将此对象与指定对象进行比较。结果为true当且仅当参数不为null且是包含与此对象相同int值的Integer对象时。
      覆盖:
      equals 在类 Object
      参数:
      obj - 要比较的对象。
      返回:
      如果对象相同则为true;否则为false
      另请参见:
    • getInteger

      public static Integer getInteger(String nm)
      确定具有指定名称的系统属性的整数值。

      第一个参数被视为系统属性的名称。系统属性可通过System.getProperty(java.lang.String)方法访问。然后,该属性的字符串值将使用decode支持的语法解释为整数值,并返回表示此值的Integer对象。

      如果没有指定名称的属性,如果指定的名称为空或null,或者属性没有正确的数字格式,则返回null

      换句话说,该方法返回一个等于以下值的Integer对象:

      getInteger(nm, null)
      参数:
      nm - 属性名称。
      返回:
      属性的Integer值。
      抛出:
      SecurityException - 出于与System.getProperty相同的原因
      另请参见:
    • getInteger

      public static Integer getInteger(String nm, int val)
      确定具有指定名称的系统属性的整数值。

      第一个参数被视为系统属性的名称。系统属性可通过System.getProperty(java.lang.String)方法访问。然后,该属性的字符串值将使用decode支持的语法解释为整数值,并返回表示此值的Integer对象。

      第二个参数是默认值。如果没有指定名称的属性,属性没有正确的数字格式,或者指定的名称为空或null,则返回表示第二个参数值的Integer对象。

      换句话说,该方法返回一个等于以下值的Integer对象:

      getInteger(nm, Integer.valueOf(val))
      但实际上可能会以以下方式实现:
       Integer result = getInteger(nm, null);
       return (result == null) ? Integer.valueOf(val) : result;
       
      以避免在不需要默认值时不必要地分配Integer对象。
      参数:
      nm - 属性名称。
      val - 默认值。
      返回:
      属性的 Integer 值。
      抛出:
      SecurityException - 出现与 System.getProperty 相同的原因
      参见:
    • getInteger

      public static Integer getInteger(String nm, Integer val)
      返回具有指定名称的系统属性的整数值。第一个参数被视为系统属性的名称。系统属性可通过 System.getProperty(java.lang.String) 方法访问。然后,该属性的字符串值被解释为整数值,如 decode 方法,然后返回表示此值的 Integer 对象;简而言之:
      • 如果属性值以两个 ASCII 字符 0x 或 ASCII 字符 # 开头,后面没有跟负号,则其余部分将被解析为十六进制整数,与具有基数 16 的 valueOf(java.lang.String, int) 方法完全相同。
      • 如果属性值以 ASCII 字符 0 开头,后面跟另一个字符,则其余部分将被解析为八进制整数,与具有基数 8 的 valueOf(java.lang.String, int) 方法完全相同。
      • 否则,属性值将被解析为十进制整数,与具有基数 10 的 valueOf(java.lang.String, int) 方法完全相同。

      第二个参数是默认值。如果没有指定名称的属性,属性没有正确的数字格式,或指定的名称为空或 null,则返回默认值。

      参数:
      nm - 属性名称。
      val - 默认值。
      返回:
      属性的 Integer 值。
      抛出:
      SecurityException - 出现与 System.getProperty 相同的原因
      参见:
    • decode

      public static Integer decode(String nm) throws NumberFormatException
      String 解码为 Integer。接受由以下语法给出的十进制、十六进制和八进制数字:
      DecodableString:
      Signopt DecimalNumeral
      Signopt 0x HexDigits
      Signopt 0X HexDigits
      Signopt # HexDigits
      Signopt 0 OctalDigits
      Sign:
      -
      +
      DecimalNumeralHexDigitsOctalDigitsThe Java Language Specification3.10.1 节中定义的那样,不接受数字之间的下划线。

      在可选符号和/或基数指示符("0x"、"0X"、"#" 或前导零)后面的字符序列将被解析为具有指定基数(10、16 或 8)的 Integer.parseInt 方法。这些字符序列必须表示正值,否则将抛出 NumberFormatException。如果指定的 String 的第一个字符是减号,则结果将被否定。在 String 中不允许有空白字符。

      参数:
      nm - 要解码的 String
      返回:
      包含由 nm 表示的 int 值的 Integer 对象
      抛出:
      NumberFormatException - 如果 String 不包含可解析的整数。
      参见:
    • compareTo

      public int compareTo(Integer anotherInteger)
      数值比较两个 Integer 对象。
      指定者:
      compareTo 在接口 Comparable<Integer>
      参数:
      anotherInteger - 要比较的 Integer
      返回:
      如果此 Integer 等于参数 Integer,则返回值为 0;如果此 Integer 在数值上小于参数 Integer,则返回值小于 0;如果此 Integer 在数值上大于参数 Integer,则返回值大于 0(有符号比较)。
      自:
      1.2
    • compare

      public static int compare(int x, int y)
      数值比较两个 int 值。返回的值与以下代码返回的值相同:
          Integer.valueOf(x).compareTo(Integer.valueOf(y))
       
      参数:
      x - 要比较的第一个 int
      y - 要比较的第二个 int
      返回:
      如果 x == y,则返回值为 0;如果 x < y,则返回值小于 0;如果 x > y,则返回值大于 0
      自:
      1.7
    • compareUnsigned

      public static int compareUnsigned(int x, int y)
      数值比较两个 int 值,将这些值视为无符号值。
      参数:
      x - 要比较的第一个 int
      y - 要比较的第二个 int
      返回:
      如果 x == y,则返回值为 0;如果 x < y 作为无符号值,则返回值小于 0;如果 x > y 作为无符号值,则返回值大于 0
      自:
      1.8
    • toUnsignedLong

      public static long toUnsignedLong(int x)
      通过无符号转换将参数转换为 long。在将参数转换为无符号的 long 时,long 的高阶 32 位为零,低阶 32 位等于整数参数的位。因此,零和正整数值将映射为数值相等的 long 值,而负整数值将映射为等于输入加 232long 值。
      参数:
      x - 要转换为无符号 long 的值
      返回:
      通过无符号转换将参数转换为 long
      自:
      1.8
    • divideUnsigned

      public static int divideUnsigned(int dividend, int divisor)
      返回将第一个参数除以第二个参数的无符号商,其中每个参数和结果都被解释为无符号值。

      请注意,在二进制补码算术中,如果两个操作数被视为都是有符号的或都是无符号的,则加法、减法和乘法的三种其他基本算术运算是按位相同的。因此,不提供单独的 addUnsigned 等方法。

      参数:
      dividend - 被除数
      divisor - 除数
      返回:
      第一个参数除以第二个参数的无符号商
      自:
      1.8
      参见:
    • remainderUnsigned

      public static int remainderUnsigned(int dividend, int divisor)
      返回将第一个参数除以第二个参数的无符号余数,其中每个参数和结果都被解释为无符号值。
      参数:
      dividend - 被除数
      divisor - 除数
      返回:
      第一个参数除以第二个参数的无符号余数
      自:
      1.8
      参见:
    • highestOneBit

      public static int highestOneBit(int i)
      返回具有最多一个一位的 int 值,位于指定 int 值的最高位(“最左边”)位置。如果指定值在其二进制补码表示中没有一位,则返回零,即等于零。
      参数:
      i - 要计算其最高一位的值
      返回:
      具有单个一位的 int 值,位于指定值的最高一位的位置,如果指定值本身等于零,则返回零。
      自:
      1.5
    • lowestOneBit

      public static int lowestOneBit(int i)
      返回具有最多一个一位的 int 值,位于指定 int 值的最低位(“最右边”)位置。如果指定值在其二进制补码表示中没有一位,则返回零,即等于零。
      参数:
      i - 要计算其最低一位的值
      返回:
      具有单个一位的 int 值,位于指定值的最低一位的位置,如果指定值本身等于零,则返回零。
      自:
      1.5
    • numberOfLeadingZeros

      public static int numberOfLeadingZeros(int i)
      返回指定int值的二进制补码表示中最高位(“最左侧”)一位前面的零位数。如果指定值在其二进制补码表示中没有一位为1,即等于零,则返回32。

      请注意,此方法与以2为底的对数密切相关。对于所有正的int值x:

      • floor(log2(x)) = 31 - numberOfLeadingZeros(x)
      • ceil(log2(x)) = 32 - numberOfLeadingZeros(x - 1)
      参数:
      i - 要计算其前导零位数的值
      返回:
      指定int值的二进制补码表示中最高位(“最左侧”)一位前面的零位数,如果该值等于零,则返回32。
      自版本:
      1.5
    • numberOfTrailingZeros

      public static int numberOfTrailingZeros(int i)
      返回指定int值的二进制补码表示中最低位(“最右侧”)一位后面的零位数。如果指定值在其二进制补码表示中没有一位为1,即等于零,则返回32。
      参数:
      i - 要计算其尾随零位数的值
      返回:
      指定int值的二进制补码表示中最低位(“最右侧”)一位后面的零位数,如果该值等于零,则返回32。
      自版本:
      1.5
    • bitCount

      public static int bitCount(int i)
      返回指定int值的二进制补码表示中的一位数。此函数有时被称为种群计数
      参数:
      i - 要计算其位数的值
      返回:
      指定int值的二进制补码表示中的一位数。
      自版本:
      1.5
    • rotateLeft

      public static int rotateLeft(int i, int distance)
      返回通过将指定int值的二进制补码表示向左旋转指定位数获得的值。(从左侧或高位移出的位重新进入右侧或低位。)

      请注意,使用负距离进行左旋转等同于右旋转:rotateLeft(val, -distance) == rotateRight(val, distance)。还请注意,通过32的任何倍数旋转是无操作,因此可以忽略旋转距离的除最后五位之外的所有位,即使距离为负数:rotateLeft(val, distance) == rotateLeft(val, distance & 0x1F)

      参数:
      i - 要向左旋转其位的值
      distance - 要向左旋转的位数
      返回:
      通过将指定int值的二进制补码表示向左旋转指定位数获得的值。
      自版本:
      1.5
    • rotateRight

      public static int rotateRight(int i, int distance)
      返回通过将指定int值的二进制补码表示向右旋转指定位数获得的值。(从右侧或低位移出的位重新进入左侧或高位。)

      请注意,使用负距离进行右旋转等同于左旋转:rotateRight(val, -distance) == rotateLeft(val, distance)。还请注意,通过32的任何倍数旋转是无操作,因此可以忽略旋转距离的除最后五位之外的所有位,即使距离为负数:rotateRight(val, distance) == rotateRight(val, distance & 0x1F)

      参数:
      i - 要向右旋转其位的值
      distance - 要向右旋转的位数
      返回:
      通过将指定int值的二进制补码表示向右旋转指定位数获得的值。
      自版本:
      1.5
    • reverse

      public static int reverse(int i)
      返回通过颠倒指定int值的二进制补码表示中位的顺序获得的值。
      参数:
      i - 要颠倒的值
      返回:
      通过颠倒指定int值中位的顺序获得的值。
      自版本:
      1.5
    • compress

      public static int compress(int i, int mask)
      返回通过根据指定的位掩码压缩指定inti的位获得的值。

      对于掩码mb的每个一位值,从最低有效位到最高有效位,将i在与mb相同的位位置的位值连续分配给从最低有效位位置开始的压缩值。压缩值的所有剩余上位位都设置为零。

      API注释:
      考虑将十六进制值的数字压缩的简单情况:
      // 将drink压缩为food
      compress(0xCAFEBABE, 0xFF00FFF0) == 0xCABAB
      
      从最右侧的最低有效十六进制数字开始,掩码0xFF00FFF0选择0xCAFEBABE的位置1、2、3、6和7的十六进制数字。所选数字按照相同顺序连续出现在结果压缩值的数字位置0中。

      以下等式都返回true,有助于理解compress的行为:

      // 如果位置n处的位为1,则返回1
      compress(x, 1 << n) == (x >> n & 1)
      
      // 逻辑右移
      compress(x, -1 << n) == x >>> n
      
      // 掩码未覆盖的任何位都将被忽略
      compress(x, m) == compress(x & m, m)
      
      // 通过自身压缩值
      compress(m, m) == (m == -1 || m == 0) ? m : (1 << bitCount(m)) - 1
      
      // 扩展然后使用相同掩码压缩
      compress(expand(x, m), m) == x & compress(m, m)
      

      羊群与山羊(SAG)操作(参见《黑客的乐趣》,第7.7节)可以实现如下:

      int compressLeft(int i, int mask) {
          // 此实现遵循《黑客的乐趣》中的描述,这是信息性的。更优化的实现是:
          //   Integer.compress(i, mask) << -Integer.bitCount(mask)
          return Integer.reverse(
              Integer.compress(Integer.reverse(i), Integer.reverse(mask)));
      }
      
      int sag(int i, int mask) {
          return compressLeft(i, mask) | Integer.compress(i, ~mask);
      }
      
      // 将羊群与山羊分开
      sag(0xCAFEBABE, 0xFF00FFF0) == 0xCABABFEE
      
      参数:
      i - 要压缩其位的值
      mask - 位掩码
      返回:
      压缩后的值
      自版本:
      19
      另请参阅:
    • expand

      public static int expand(int i, int mask)
      返回通过根据指定的位掩码扩展指定inti的位获得的值。

      对于掩码mb的每个一位值,从最低有效位到最高有效位,将i的下一个连续位值从最低有效位开始分配给与mb相同位位置的扩展值。扩展值的所有其他剩余位都设置为零。

      API注释:
      考虑将十六进制值的数字扩展的简单情况:
      expand(0x0000CABAB, 0xFF00FFF0) == 0xCA00BAB0
      
      从最右侧的最低有效十六进制数字开始,掩码0xFF00FFF0选择0x0000CABAB的前五个十六进制数字。所选数字按照相同顺序出现在结果扩展值的位置1、2、3、6和7。

      以下等式都返回true,有助于理解expand的行为:

      // 逻辑右移位置0处的位
      expand(x, 1 << n) == (x & 1) << n
      
      // 逻辑右移
      expand(x, -1 << n) == x << n
      
      // 扩展所有位返回掩码
      expand(-1, m) == m
      
      // 掩码未覆盖的任何位都将被忽略
      expand(x, m) == expand(x, m) & m
      
      // 压缩然后使用相同掩码扩展
      expand(compress(x, m), m) == x & m
      

      用于确定int值中具有索引n的一位的位置的选择操作可以实现如下:

      int select(int i, int n) {
          // 具有索引n的i(掩码)中的一位
          int nthBit = Integer.expand(1 << n, i);
          // 具有索引n的一位的位位置
          return Integer.numberOfTrailingZeros(nthBit);
      }
      
      // 具有索引0的一位在位位置1
      select(0b10101010_10101010, 0) == 1
      // 具有索引3的一位在位位置7
      select(0b10101010_10101010, 3) == 7
      
      参数:
      i - 要扩展其位的值
      mask - 位掩码
      返回:
      扩展后的值
      自版本:
      19
      另请参阅:
    • signum

      public static int signum(int i)
      返回指定int值的符号函数。(如果指定值为负,则返回值为-1;如果指定值为零,则返回值为0;如果指定值为正,则返回值为1。)
      参数:
      i - 要计算符号的值
      返回:
      指定int值的符号函数
      自版本:
      1.5
    • reverseBytes

      public static int reverseBytes(int i)
      返回指定int值的补码表示中字节顺序颠倒后得到的值。
      参数:
      i - 要颠倒字节的值
      返回:
      颠倒指定int值的字节后得到的值
      自版本:
      1.5
    • sum

      public static int sum(int a, int b)
      根据+运算符将两个整数相加。
      参数:
      a - 第一个操作数
      b - 第二个操作数
      返回:
      ab的和
      自版本:
      1.8
      参见:
    • max

      public static int max(int a, int b)
      返回两个int值中较大的值,就像调用Math.max一样。
      参数:
      a - 第一个操作数
      b - 第二个操作数
      返回:
      ab中较大的值
      自版本:
      1.8
      参见:
    • min

      public static int min(int a, int b)
      返回两个int值中较小的值,就像调用Math.min一样。
      参数:
      a - 第一个操作数
      b - 第二个操作数
      返回:
      ab中较小的值
      自版本:
      1.8
      参见:
    • describeConstable

      public Optional<Integer> describeConstable()
      返回包含此实例的名义描述符的Optional,即实例本身。
      指定者:
      describeConstable 在接口 Constable
      返回:
      描述Integer实例的Optional
      自版本:
      12
    • resolveConstantDesc

      public Integer resolveConstantDesc(MethodHandles.Lookup lookup)
      将此实例解析为ConstantDesc,其结果是实例本身。
      指定者:
      resolveConstantDesc 在接口 ConstantDesc
      参数:
      lookup - 忽略
      返回:
      Integer实例
      自版本:
      12