From 3e1b181a6785c3b77b1cd877a8f6759efad6cfe8 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sat, 15 Jun 2002 19:45:34 +0000 Subject: AbstractMethodError.java: Re-merged with Classpath. * java/lang/AbstractMethodError.java: Re-merged with Classpath. * java/lang/ArithmeticException.java: Likewise. * java/lang/ArrayIndexOutOfBoundsException.java: Likewise. * java/lang/ArrayStoreException.java: Likewise. * java/lang/Byte.java: Likewise. * java/lang/CharSequence.java: Likewise. * java/lang/ClassCastException.java: Likewise. * java/lang/ClassCircularityError.java: Likewise. * java/lang/ClassFormatError.java: Likewise. * java/lang/CloneNotSupportedException.java: Likewise. * java/lang/Cloneable.java: Likewise. * java/lang/Comparable.java: Likewise. * java/lang/Compiler.java: Likewise. * java/lang/Error.java: Likewise. * java/lang/ExceptionInInitializerError.java: Likewise. * java/lang/IllegalAccessError.java: Likewise. * java/lang/IllegalAccessException.java: Likewise. * java/lang/IllegalArgumentException.java: Likewise. * java/lang/IllegalMonitorStateException.java: Likewise. * java/lang/IllegalStateException.java: Likewise. * java/lang/IllegalThreadStateException.java: Likewise. * java/lang/IncompatibleClassChangeError.java: Likewise. * java/lang/IndexOutOfBoundsException.java: Likewise. * java/lang/InheritableThreadLocal.java: Likewise. * java/lang/InstantiationError.java: Likewise. * java/lang/InstantiationException.java: Likewise. * java/lang/InternalError.java: Likewise. * java/lang/InterruptedException.java: Likewise. * java/lang/LinkageError.java: Likewise. * java/lang/NegativeArraySizeException.java: Likewise. * java/lang/NoClassDefFoundError.java: Likewise. * java/lang/NoSuchFieldError.java: Likewise. * java/lang/NoSuchFieldException.java: Likewise. * java/lang/NoSuchMethodError.java: Likewise. * java/lang/NoSuchMethodException.java: Likewise. * java/lang/NullPointerException.java: Likewise. * java/lang/NumberFormatException.java: Likewise. * java/lang/OutOfMemoryError.java: Likewise. * java/lang/Process.java: Likewise. * java/lang/Runnable.java: Likewise. * java/lang/RuntimePermission.java: Likewise. * java/lang/SecurityException.java: Likewise. * java/lang/Short.java: Likewise. * java/lang/StackOverflowError.java: Likewise. * java/lang/StringIndexOutOfBoundsException.java: Likewise. * java/lang/ThreadDeath.java: Likewise. * java/lang/ThreadLocal.java: Likewise. * java/lang/UnknownError.java: Likewise. * java/lang/UnsatisfiedLinkError.java: Likewise. * java/lang/UnsupportedClassVersionError.java: Likewise. * java/lang/UnsupportedOperationException.java: Likewise. * java/lang/VerifyError.java: Likewise. * java/lang/VirtualMachineError.java: Likewise. * java/lang/reflect/InvocationTargetException.java: Likewise. * java/net/BindException.java: Likewise. * java/net/ConnectException.java: Likewise. * java/net/MalformedURLException.java: Likewise. * java/net/NoRouteToHostException.java: Likewise. * java/net/ProtocolException.java: Likewise. * java/net/SocketException.java: Likewise. * java/net/UnknownHostException.java: Likewise. * java/net/UnknownServiceException.java: Likewise. From-SVN: r54656 --- libjava/java/lang/Byte.java | 343 +++++++++++++++++++++++++------------------- 1 file changed, 193 insertions(+), 150 deletions(-) (limited to 'libjava/java/lang/Byte.java') diff --git a/libjava/java/lang/Byte.java b/libjava/java/lang/Byte.java index eab2d537a01..7605ad70ef4 100644 --- a/libjava/java/lang/Byte.java +++ b/libjava/java/lang/Byte.java @@ -1,5 +1,5 @@ /* Byte.java -- object wrapper for byte - Copyright (C) 1998, 2001 Free Software Foundation, Inc. + Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -7,7 +7,7 @@ GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU @@ -48,267 +48,310 @@ package java.lang; * @author Paul Fisher * @author John Keiser * @author Per Bothner - * @since JDK 1.0 + * @author Eric Blake + * @since 1.1 + * @status updated to 1.4 */ -public final class Byte extends Number implements Comparable +public final class Byte extends Number implements Comparable { - static final long serialVersionUID = -7183698231559129828L; + /** + * Compatible with JDK 1.1+. + */ + private static final long serialVersionUID = -7183698231559129828L; /** - * The minimum value a byte can represent is -128. + * The minimum value a byte can represent is -128 (or + * -27). */ public static final byte MIN_VALUE = -128; /** - * The maximum value a byte can represent is 127. + * The maximum value a byte can represent is 127 (or + * 27 - 1). */ public static final byte MAX_VALUE = 127; /** - * The primitive type byte is represented by this + * The primitive type byte is represented by this * Class object. */ public static final Class TYPE = VMClassLoader.getPrimitiveClass('B'); /** * The immutable value of this Byte. + * + * @serial the wrapped byte */ private final byte value; /** - * Create a Byte object representing the value of the + * Create a Byte object representing the value of the * byte argument. * * @param value the value to use - */ - public Byte(byte value) + */ + public Byte(byte value) { this.value = value; } /** - * Create a Byte object representing the value specified - * by the String argument. + * Create a Byte object representing the value specified + * by the String argument * - * @param s the string to convert. + * @param s the string to convert + * @throws NumberFormatException if the String does not contain a byte + * @see #valueOf(String) */ - public Byte(String s) throws NumberFormatException + public Byte(String s) { value = parseByte(s, 10); } /** - * Return a hashcode representing this Object. - * - * Byte's hash code is calculated by simply returning its - * value. + * Converts the byte to a String and assumes + * a radix of 10. * - * @return this Object's hash code. + * @param b the byte to convert to String + * @return the String representation of the argument */ - public int hashCode() + public static String toString(byte b) { - return value; + return String.valueOf(b); } /** - * Returns true if obj is an instance of - * Byte and represents the same byte value. - * @return whether these Objects are semantically equal. - */ - public boolean equals(Object obj) - { - return ((obj instanceof Byte) && (value == ((Byte)obj).byteValue())); - } - - /** - * Converts the byte to a String and assumes - * a radix of 10. - * @param i the byte to convert to String - * @return the String representation of the argument. - */ - public static String toString(byte i) + * Converts the specified String into a byte. + * This function assumes a radix of 10. + * + * @param s the String to convert + * @return the byte value of s + * @throws NumberFormatException if s cannot be parsed as a + * byte + * @see #parseByte(String) + */ + public static byte parseByte(String s) { - return Integer.toString ((int) i); + return parseByte(s, 10); } /** - * Converts the Byte value to a String and - * assumes a radix of 10. - * @return the String representation of this Byte. - */ - public String toString() - { - return Integer.toString ((int) value); - } - - /** - * Creates a new Byte object using the String, - * assuming a radix of 10. - * @param s the String to convert. - * @return the new Byte. - * @see #Byte(java.lang.String) - * @see #parseByte(java.lang.String) - * @exception NumberFormatException thrown if the String - * cannot be parsed as a byte. + * Converts the specified String into an int + * using the specified radix (base). The string must not be null + * or empty. It may begin with an optional '-', which will negate the answer, + * provided that there are also valid digits. Each digit is parsed as if by + * Character.digit(d, radix), and must be in the range + * 0 to radix - 1. Finally, the result must be + * within MIN_VALUE to MAX_VALUE, inclusive. + * Unlike Double.parseDouble, you may not have a leading '+'. + * + * @param s the String to convert + * @param radix the radix (base) to use in the conversion + * @return the String argument converted to byte + * @throws NumberFormatException if s cannot be parsed as a + * byte */ - public static Byte valueOf(String s) throws NumberFormatException + public static byte parseByte(String s, int radix) { - return new Byte(parseByte(s)); + int i = Integer.parseInt(s, radix, false); + if ((byte) i != i) + throw new NumberFormatException(); + return (byte) i; } /** * Creates a new Byte object using the String * and specified radix (base). - * @param s the String to convert. - * @param radix the radix (base) to convert with. - * @return the new Byte. - * @see #parseByte(java.lang.String,int) - * @exception NumberFormatException thrown if the String - * cannot be parsed as a byte. - */ - public static Byte valueOf(String s, int radix) - throws NumberFormatException - { - return new Byte(parseByte(s, radix)); - } - - /** - * Converts the specified String into a byte. - * This function assumes a radix of 10. * * @param s the String to convert - * @return the byte value of the String - * argument. - * @exception NumberFormatException thrown if the String - * cannot be parsed as a byte. + * @param radix the radix (base) to convert with + * @return the new Byte + * @throws NumberFormatException if s cannot be parsed as a + * byte + * @see #parseByte(String, int) */ - public static byte parseByte(String s) throws NumberFormatException + public static Byte valueOf(String s, int radix) { - return parseByte(s, 10); + return new Byte(parseByte(s, radix)); } /** - * Converts the specified String into a byte - * using the specified radix (base). + * Creates a new Byte object using the String, + * assuming a radix of 10. * - * @param str the String to convert - * @param radix the radix (base) to use in the conversion - * @return the String argument converted to byte. - * @exception NumberFormatException thrown if the String - * cannot be parsed as a byte. + * @param s the String to convert + * @return the new Byte + * @throws NumberFormatException if s cannot be parsed as a + * byte + * @see #Byte(String) + * @see #parseByte(String) */ - public static byte parseByte(String str, int radix) - throws NumberFormatException + public static Byte valueOf(String s) { - int i = Integer.parseInt(str, radix); - if (i < MIN_VALUE || i > MAX_VALUE) - throw new NumberFormatException(); - return (byte) i; + return new Byte(parseByte(s, 10)); } /** * Convert the specified String into a Byte. - * The String may represent decimal, hexadecimal, or + * The String may represent decimal, hexadecimal, or * octal numbers. * - * The String argument is interpreted based on the leading - * characters. Depending on what the String begins with, the base will be - * interpreted differently: + *

The extended BNF grammar is as follows:
+ *

+   * DecodableString:
+   *      ( [ - ] DecimalNumber )
+   *    | ( [ - ] ( 0x | 0X
+   *              | # ) { HexDigit }+ )
+   *    | ( [ - ] 0 { OctalDigit } )
+   * DecimalNumber:
+   *        DecimalDigit except '0' { DecimalDigit }
+   * DecimalDigit:
+   *        Character.digit(d, 10) has value 0 to 9
+   * OctalDigit:
+   *        Character.digit(d, 8) has value 0 to 7
+   * DecimalDigit:
+   *        Character.digit(d, 16) has value 0 to 15
+   * 
+ * Finally, the value must be in the range MIN_VALUE to + * MAX_VALUE, or an exception is thrown. * - * - * - * - * - * - * - * - *
Leading
Characters
Base
#16
0x16
0X16
08
Anything
Else
10
- * - * @param str the String to interpret. - * @return the value of the String as a Byte. - * @exception NumberFormatException thrown if the String - * cannot be parsed as a byte. + * @param s the String to interpret + * @return the value of the String as a Byte + * @throws NumberFormatException if s cannot be parsed as a + * byte + * @throws NullPointerException if s is null + * @see Integer#decode(String) */ - public static Byte decode(String str) throws NumberFormatException + public static Byte decode(String s) { - int i = (Integer.decode(str)).intValue(); - if (i < MIN_VALUE || i > MAX_VALUE) + int i = Integer.parseInt(s, 10, true); + if ((byte) i != i) throw new NumberFormatException(); return new Byte((byte) i); } - - /** Return the value of this Byte as an short. - ** @return the value of this Byte as an short. - **/ + + /** + * Return the value of this Byte. + * + * @return the byte value + */ public byte byteValue() { return value; } - /** Return the value of this Byte as an short. - ** @return the value of this Byte as an short. - **/ + /** + * Return the value of this Byte as a short. + * + * @return the short value + */ public short shortValue() { return value; } - /** Return the value of this Byte as an int. - ** @return the value of this Byte as an int. - **/ + /** + * Return the value of this Byte as an int. + * + * @return the int value + */ public int intValue() { return value; } - /** Return the value of this Byte as a long. - ** @return the value of this Byte as a long. - **/ + /** + * Return the value of this Byte as a long. + * + * @return the long value + */ public long longValue() { return value; } - /** Return the value of this Byte as a float. - ** @return the value of this Byte as a float. - **/ + /** + * Return the value of this Byte as a float. + * + * @return the float value + */ public float floatValue() { return value; } - /** Return the value of this Byte as a double. - ** @return the value of this Byte as a double. - **/ + /** + * Return the value of this Byte as a double. + * + * @return the double value + */ public double doubleValue() { return value; } - + /** - * Compare two Bytes numerically by comparing their - * byte values. - * @return a positive value if this Byte is greater - * in value than the argument Byte; a negative value - * if this Byte is smaller in value than the argument - * Byte; and 0, zero, if this - * Byte is equal in value to the argument - * Byte. + * Converts the Byte value to a String and + * assumes a radix of 10. + * + * @return the String representation of this Byte + * @see Integer#toString() + */ + public String toString() + { + return String.valueOf(value); + } + + /** + * Return a hashcode representing this Object. Byte's hash + * code is simply its value. + * + * @return this Object's hash code + */ + public int hashCode() + { + return value; + } + + /** + * Returns true if obj is an instance of + * Byte and represents the same byte value. + * + * @param obj the object to compare + * @return whether these Objects are semantically equal + */ + public boolean equals(Object obj) + { + return obj instanceof Byte && value == ((Byte) obj).value; + } + + /** + * Compare two Bytes numerically by comparing their byte values. + * The result is positive if the first is greater, negative if the second + * is greater, and 0 if the two are equal. + * + * @param b the Byte to compare + * @return the comparison + * @since 1.2 */ public int compareTo(Byte b) { - return (int)(value - b.byteValue()); + return value - b.value; } - + /** - * Behaves like compareTo(java.lang.Byte) unless the Object - * is not a Byte. Then it throws a - * ClassCastException. - * @exception ClassCastException if the argument is not a - * Byte. + * Behaves like compareTo(Byte) unless the Object + * is not a Byte. + * + * @param o the object to compare + * @return the comparison + * @throws ClassCastException if the argument is not a Byte + * @see #compareTo(Byte) + * @see Comparable + * @since 1.2 */ public int compareTo(Object o) { - return compareTo((Byte)o); + return compareTo((Byte) o); } } -- cgit v1.2.3