Byte.java revision 1f07ea29bc2d334c55c16227582a7795b8c117c1
1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.lang;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The wrapper for the primitive type {@code byte}.
22f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson *
23f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.1
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
25f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilsonpublic final class Byte extends Number implements Comparable<Byte> {
26f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private static final long serialVersionUID = -7183698231559129828L;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * The value which the receiver represents.
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private final byte value;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * The maximum {@code Byte} value, 2<sup>7</sup>-1.
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final byte MAX_VALUE = (byte) 0x7F;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * The minimum {@code Byte} value, -2<sup>7</sup>.
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final byte MIN_VALUE = (byte) 0x80;
43f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * The number of bits needed to represent a {@code Byte} value in two's
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * complement form.
47f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
48f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @since 1.5
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static final int SIZE = 8;
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * The {@link Class} object that represents the primitive type {@code byte}.
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @SuppressWarnings("unchecked")
56726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    public static final Class<Byte> TYPE
57726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch            = (Class<Byte>) byte[].class.getComponentType();
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // Note: This can't be set to "byte.class", since *that* is
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // defined to be "java.lang.Byte.TYPE";
60f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Constructs a new {@code Byte} with the specified primitive byte value.
63f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param value
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the primitive byte value to store in the new instance.
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Byte(byte value) {
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this.value = value;
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Constructs a new {@code Byte} from the specified string.
73f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the string representation of a single byte value.
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if {@code string} can not be decoded into a byte value.
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #parseByte(String)
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Byte(String string) throws NumberFormatException {
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        this(parseByte(string));
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Gets the primitive value of this byte.
86f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return this object's primitive value.
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public byte byteValue() {
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return value;
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Compares this object to the specified byte object to determine their
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * relative order.
97f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param object
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the byte object to compare this object to.
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a negative value if the value of this byte is less than the value
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         of {@code object}; 0 if the value of this byte and the value of
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code object} are equal; a positive value if the value of this
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         byte is greater than the value of {@code object}.
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see java.lang.Comparable
105f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @since 1.2
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int compareTo(Byte object) {
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return value > object.value ? 1 : (value < object.value ? -1 : 0);
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parses the specified string and returns a {@code Byte} instance if the
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * string can be decoded into a single byte value. The string may be an
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * optional minus sign "-" followed by a hexadecimal ("0x..." or "#..."),
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * octal ("0..."), or decimal ("...") representation of a byte.
116f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            a string representation of a single byte value.
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a {@code Byte} containing the value represented by {@code string}.
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if {@code string} can not be parsed as a byte value.
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static Byte decode(String string) throws NumberFormatException {
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int intValue = Integer.decode(string).intValue();
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte result = (byte) intValue;
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (result == intValue) {
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return valueOf(result);
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1291f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes        throw new NumberFormatException("Value out of range for byte: \"" + string + "\"");
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public double doubleValue() {
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return value;
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Compares this object with the specified object and indicates if they are
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * equal. In order to be equal, {@code object} must be an instance of
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * {@code Byte} and have the same byte value as this object.
141f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param object
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the object to compare this byte with.
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return {@code true} if the specified object is equal to this
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code Byte}; {@code false} otherwise.
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public boolean equals(Object object) {
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return (object == this) || (object instanceof Byte)
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                && (value == ((Byte) object).value);
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public float floatValue() {
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return value;
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int hashCode() {
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return value;
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int intValue() {
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return value;
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public long longValue() {
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return value;
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parses the specified string as a signed decimal byte value. The ASCII
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * character \u002d ('-') is recognized as the minus sign.
176f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the string representation of a single byte value.
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the primitive byte value represented by {@code string}.
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if {@code string} is {@code null}, has a length of zero or
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             can not be parsed as a byte value.
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static byte parseByte(String string) throws NumberFormatException {
1851f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes        return parseByte(string, 10);
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parses the specified string as a signed byte value using the specified
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * radix. The ASCII character \u002d ('-') is recognized as the minus sign.
191f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the string representation of a single byte value.
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param radix
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the radix to use when parsing.
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the primitive byte value represented by {@code string} using
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code radix}.
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if {@code string} is {@code null} or has a length of zero,
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             {@code radix < Character.MIN_RADIX},
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             {@code radix > Character.MAX_RADIX}, or if {@code string}
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             can not be parsed as a byte value.
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
2041f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes    public static byte parseByte(String string, int radix) throws NumberFormatException {
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int intValue = Integer.parseInt(string, radix);
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte result = (byte) intValue;
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (result == intValue) {
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return result;
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2101f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes        throw new NumberFormatException("Value out of range for byte: \"" + string + "\"");
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public short shortValue() {
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return value;
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String toString() {
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return Integer.toString(value);
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a string containing a concise, human-readable description of the
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * specified byte value.
226f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param value
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the byte to convert to a string.
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a printable representation of {@code value}.
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static String toString(byte value) {
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return Integer.toString(value);
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parses the specified string as a signed decimal byte value.
237f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the string representation of a single byte value.
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a {@code Byte} instance containing the byte value represented by
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code string}.
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if {@code string} is {@code null}, has a length of zero or
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             can not be parsed as a byte value.
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #parseByte(String)
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static Byte valueOf(String string) throws NumberFormatException {
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return valueOf(parseByte(string));
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parses the specified string as a signed byte value using the specified
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * radix.
254f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the string representation of a single byte value.
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param radix
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the radix to use when parsing.
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a {@code Byte} instance containing the byte value represented by
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code string} using {@code radix}.
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if {@code string} is {@code null} or has a length of zero,
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             {@code radix < Character.MIN_RADIX},
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             {@code radix > Character.MAX_RADIX}, or if {@code string}
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             can not be parsed as a byte value.
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #parseByte(String, int)
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
2681f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes    public static Byte valueOf(String string, int radix) throws NumberFormatException {
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return valueOf(parseByte(string, radix));
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
271f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a {@code Byte} instance for the specified byte value.
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * If it is not necessary to get a new {@code Byte} instance, it is
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * recommended to use this method instead of the constructor, since it
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * maintains a cache of instances which may result in better performance.
278f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param b
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the byte value to store in the instance.
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a {@code Byte} instance containing {@code b}.
282f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @since 1.5
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static Byte valueOf(byte b) {
285726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch        return VALUES[b + 128];
286726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    }
287726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch
288726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    /**
289726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch     * A cache of instances used by {@link Byte#valueOf(byte)} and auto-boxing
290726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch     */
291726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    private static final Byte[] VALUES = new Byte[256];
292726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch
293726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    static {
294726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch        for (int i = -128; i < 128; i++) {
295726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch            VALUES[i + 128] = new Byte((byte) i);
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
299