Byte.java revision 8890504f824eca28560987cc23d0b18e8a62bbaa
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
778890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes     *             if {@code string} cannot be parsed as 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
1218890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes     *             if {@code string} cannot 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
1818890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes     *             if {@code string} can not be parsed as a byte value.
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static byte parseByte(String string) throws NumberFormatException {
1841f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes        return parseByte(string, 10);
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parses the specified string as a signed byte value using the specified
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * radix. The ASCII character \u002d ('-') is recognized as the minus sign.
190f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the string representation of a single byte value.
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param radix
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the radix to use when parsing.
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the primitive byte value represented by {@code string} using
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code radix}.
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
1988890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes     *             if {@code string} can not be parsed as a byte value, or
1998890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes     *             {@code radix < Character.MIN_RADIX ||
2008890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes     *             radix > Character.MAX_RADIX}.
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
2021f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes    public static byte parseByte(String string, int radix) throws NumberFormatException {
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int intValue = Integer.parseInt(string, radix);
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte result = (byte) intValue;
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (result == intValue) {
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return result;
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
2081f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes        throw new NumberFormatException("Value out of range for byte: \"" + string + "\"");
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public short shortValue() {
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return value;
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String toString() {
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return Integer.toString(value);
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a string containing a concise, human-readable description of the
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * specified byte value.
224f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param value
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the byte to convert to a string.
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a printable representation of {@code value}.
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static String toString(byte value) {
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return Integer.toString(value);
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parses the specified string as a signed decimal byte value.
235f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the string representation of a single byte value.
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a {@code Byte} instance containing the byte value represented by
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code string}.
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
2418890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes     *             if {@code string} can not be parsed as a byte value.
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #parseByte(String)
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static Byte valueOf(String string) throws NumberFormatException {
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return valueOf(parseByte(string));
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parses the specified string as a signed byte value using the specified
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * radix.
251f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the string representation of a single byte value.
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param radix
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the radix to use when parsing.
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a {@code Byte} instance containing the byte value represented by
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code string} using {@code radix}.
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
2598890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes     *             if {@code string} can not be parsed as a byte value, or
2608890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes     *             {@code radix < Character.MIN_RADIX ||
2618890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes     *             radix > Character.MAX_RADIX}.
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #parseByte(String, int)
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
2641f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes    public static Byte valueOf(String string, int radix) throws NumberFormatException {
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return valueOf(parseByte(string, radix));
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
267f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a {@code Byte} instance for the specified byte value.
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * If it is not necessary to get a new {@code Byte} instance, it is
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * recommended to use this method instead of the constructor, since it
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * maintains a cache of instances which may result in better performance.
274f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param b
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the byte value to store in the instance.
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a {@code Byte} instance containing {@code b}.
278f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @since 1.5
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static Byte valueOf(byte b) {
281726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch        return VALUES[b + 128];
282726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    }
283726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch
284726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    /**
285726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch     * A cache of instances used by {@link Byte#valueOf(byte)} and auto-boxing
286726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch     */
287726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    private static final Byte[] VALUES = new Byte[256];
288726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch
289726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    static {
290726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch        for (int i = -128; i < 128; i++) {
291726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch            VALUES[i + 128] = new Byte((byte) i);
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
295