integer.java
来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 686 行 · 第 1/2 页
JAVA
686 行
throw new NumberFormatException(s);
}
if (result < multmin) {
throw new NumberFormatException(s);
}
result *= radix;
if (result < limit + digit) {
throw new NumberFormatException(s);
}
result -= digit;
}
} else {
throw new NumberFormatException(s);
}
if (negative) {
if (i > 1) {
return result;
} else { /* Only got "-" */
throw new NumberFormatException(s);
}
} else {
return -result;
}
}
/**
* Parses the string argument as a signed decimal integer. The
* characters in the string must all be decimal digits, except that
* the first character may be an ASCII minus sign <code>'-'</code> to
* indicate a negative value.
*
* @param s a string.
* @return the integer represented by the argument in decimal.
* @exception NumberFormatException if the string does not contain a
* parsable integer.
* @since JDK1.0
*/
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
/**
* Returns a new Integer object initialized to the value of the
* specified String. Throws an exception if the String cannot be
* parsed as an int.
*
* @param s the string to be parsed.
* @return a newly constructed <code>Integer</code> initialized to the
* value represented by the string argument in the specified
* radix.
* @exception NumberFormatException if the <code>String</code> does not
* contain a parsable integer.
* @since JDK1.0
*/
public static Integer valueOf(String s, int radix) throws NumberFormatException {
return new Integer(parseInt(s,radix));
}
/**
* Returns a new Integer object initialized to the value of the
* specified String. Throws an exception if the String cannot be
* parsed as an int. The radix is assumed to be 10.
*
* @param s the string to be parsed.
* @return a newly constructed <code>Integer</code> initialized to the
* value represented by the string argument.
* @exception NumberFormatException if the string does not contain a
* parsable integer.
* @since JDK1.0
*/
public static Integer valueOf(String s) throws NumberFormatException
{
return new Integer(parseInt(s, 10));
}
/**
* The value of the Integer.
*/
private int value;
/**
* Constructs a newly allocated <code>Integer</code> object that
* represents the primitive <code>int</code> argument.
*
* @param value the value to be represented by the <code>Integer</code>.
* @since JDK1.0
*/
public Integer(int value) {
this.value = value;
}
/**
* Constructs a newly allocated <code>Integer</code> object that
* represents the value represented by the string. The string is
* converted to an int value as if by the <code>valueOf</code> method.
*
* @param s the <code>String</code> to be converted to an
* <code>Integer</code>.
* @exception NumberFormatException if the <code>String</code> does not
* contain a parsable integer.
* @see java.lang.Integer#valueOf(java.lang.String, int)
* @since JDK1.0
*/
public Integer(String s) throws NumberFormatException {
this.value = parseInt(s, 10);
}
/**
* Returns the value of this Integer as a byte.
*
* @since JDK1.1
*/
public byte byteValue() {
return (byte)value;
}
/**
* Returns the value of this Integer as a short.
*
* @since JDK1.1
*/
public short shortValue() {
return (short)value;
}
/**
* Returns the value of this Integer as an int.
*
* @return the <code>int</code> value represented by this object.
* @since JDK1.0
*/
public int intValue() {
return value;
}
/**
* Returns the value of this Integer as a long.
*
* @return the <code>int</code> value represented by this object that is
* converted to type <code>long</code> and the result of the
* conversion is returned.
* @since JDK1.0
*/
public long longValue() {
return (long)value;
}
/**
* Returns the value of this Integer as a float.
*
* @return the <code>int</code> value represented by this object is
* converted to type <code>float</code> and the result of the
* conversion is returned.
* @since JDK1.0
*/
public float floatValue() {
return (float)value;
}
/**
* Returns the value of this Integer as a double.
*
* @return the <code>int</code> value represented by this object is
* converted to type <code>double</code> and the result of the
* conversion is returned.
* @since JDK1.0
*/
public double doubleValue() {
return (double)value;
}
/**
* Returns a String object representing this Integer's value.
*
* @return a string representation of the value of this object in
* base 10.
* @since JDK1.0
*/
public String toString() {
return String.valueOf(value);
}
/**
* Returns a hashcode for this Integer.
*
* @return a hash code value for this object.
* @since JDK1.0
*/
public int hashCode() {
return value;
}
/**
* Compares this object to the specified object.
* The result is <code>true</code> if and only if the argument is not
* <code>null</code> and is an <code>Integer</code> object that contains
* the same <code>int</code> value as this object.
*
* @param obj the object to compare with.
* @return <code>true</code> if the objects are the same;
* <code>false</code> otherwise.
* @since JDK1.0
*/
public boolean equals(Object obj) {
if ((obj != null) && (obj instanceof Integer)) {
return value == ((Integer)obj).intValue();
}
return false;
}
/**
* Determines the integer value of the system property with the
* specified name.
* <p>
* The first argument is treated as the name of a system property.
* System properties are accessible through <code>getProperty</code>
* and , a method defined by the <code>System</code> class. The
* string value of this property is then interpreted as an integer
* value and an <code>Integer</code> object representing this value is
* returned. Details of possible numeric formats can be found with
* the definition of <code>getProperty</code>.
* <p>
* If there is no property with the specified name, or if the
* property does not have the correct numeric format, then
* <code>null</code> is returned.
*
* @param nm property name.
* @return the <code>Integer</code> value of the property.
* @see java.lang.System#getProperty(java.lang.String)
* @see java.lang.System#getProperty(java.lang.String, java.lang.String)
* @since JDK1.0
*/
public static Integer getInteger(String nm) {
SecurityManager sm = System.getSecurityManager();
if (sm != null)
sm.checkPropertyAccess(nm);
return getInteger(nm, null);
}
/**
* Determines the integer value of the system property with the
* specified name.
* <p>
* The first argument is treated as the name of a system property.
* System properties are accessible through <code>getProperty</code>
* and , a method defined by the <code>System</code> class. The
* string value of this property is then interpreted as an integer
* value and an <code>Integer</code> object representing this value is
* returned. Details of possible numeric formats can be found with
* the definition of <code>getProperty</code>.
* <p>
* If there is no property with the specified name, or if the
* property does not have the correct numeric format, then an
* <code>Integer</code> object that represents the value of the
* second argument is returned.
*
* @param nm property name.
* @param val default value.
* @return the <code>Integer</code> value of the property.
* @see java.lang.System#getProperty(java.lang.String)
* @see java.lang.System#getProperty(java.lang.String, java.lang.String)
* @since JDK1.0
*/
public static Integer getInteger(String nm, int val) {
SecurityManager sm = System.getSecurityManager();
if (sm != null)
sm.checkPropertyAccess(nm);
Integer result = getInteger(nm, null);
return (result == null) ? new Integer(val) : result;
}
/**
* Determines the integer value of the system property with the
* specified name.
* <p>
* The first argument is treated as the name of a system property.
* System properties are accessible through <code>getProperty</code>
* and , a method defined by the <code>System</code> class. The
* string value of this property is then interpreted as an integer
* value and an <code>Integer</code> object representing this value is
* returned.
* <p>
* If the property value begins with "<code>0x</code>" or
* "<code>#</code>", not followed by a minus sign, the rest
* of it is parsed as a hexadecimal integer exactly as for the method
* <code>Integer.valueOf</code> with radix 16.
* <p>
* If the property value begins with "<code>0</code>" then
* it is parsed as an octal integer exactly as for the method
* <code>Integer.valueOf</code> with radix 8.
* <p>
* Otherwise the property value is parsed as a decimal integer
* exactly as for the method <code>Integer.valueOf</code> with radix 10.
* <p>
* The second argument is the default value. If there is no property
* of the specified name, or if the property does not have the
* correct numeric format, then the second argument is returned.
*
* @param nm property name.
* @param val default value.
* @return the <code>Integer</code> value of the property.
* @see java.lang.System#getProperty(java.lang.String)
* @see java.lang.System#getProperty(java.lang.String, java.lang.String)
* @since JDK1.0
*/
public static Integer getInteger(String nm, Integer val) {
SecurityManager sm = System.getSecurityManager();
if (sm != null)
sm.checkPropertyAccess(nm);
String v = System.getProperty(nm);
if (v != null) {
try {
return Integer.decode(v);
} catch (NumberFormatException e) {
}
}
return val;
}
/**
* Decodes a string into an Integer. Deals with decimal, hexadecimal,
* and octal numbers.
* @param nm the string to decode
* @since JDK1.1
*/
public static Integer decode(String nm) throws NumberFormatException {
if (nm.startsWith("0x")) {
return Integer.valueOf(nm.substring(2), 16);
}
if (nm.startsWith("#")) {
return Integer.valueOf(nm.substring(1), 16);
}
if (nm.startsWith("0") && nm.length() > 1) {
return Integer.valueOf(nm.substring(1), 8);
}
return Integer.valueOf(nm);
}
/** use serialVersionUID from JDK 1.0.2 for interoperability */
private static final long serialVersionUID = 1360826667806852920L;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?