Byte.java revision 726ac583d69b37db03c6279af5b36df7b837ede1
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        }
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        throw new NumberFormatException();
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 {
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int intValue = Integer.parseInt(string);
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte result = (byte) intValue;
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (result == intValue) {
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return result;
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        throw new NumberFormatException();
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parses the specified string as a signed byte value using the specified
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * radix. The ASCII character \u002d ('-') is recognized as the minus sign.
196f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the string representation of a single byte value.
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param radix
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the radix to use when parsing.
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return the primitive byte value represented by {@code string} using
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code radix}.
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if {@code string} is {@code null} or has a length of zero,
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             {@code radix < Character.MIN_RADIX},
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             {@code radix > Character.MAX_RADIX}, or if {@code string}
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             can not be parsed as a byte value.
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static byte parseByte(String string, int radix)
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throws NumberFormatException {
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int intValue = Integer.parseInt(string, radix);
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte result = (byte) intValue;
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (result == intValue) {
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return result;
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        throw new NumberFormatException();
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public short shortValue() {
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return value;
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String toString() {
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return Integer.toString(value);
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a string containing a concise, human-readable description of the
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * specified byte value.
232f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param value
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the byte to convert to a string.
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a printable representation of {@code value}.
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static String toString(byte value) {
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return Integer.toString(value);
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parses the specified string as a signed decimal byte value.
243f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the string representation of a single byte value.
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a {@code Byte} instance containing the byte value represented by
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code string}.
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if {@code string} is {@code null}, has a length of zero or
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             can not be parsed as a byte value.
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #parseByte(String)
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static Byte valueOf(String string) throws NumberFormatException {
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return valueOf(parseByte(string));
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Parses the specified string as a signed byte value using the specified
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * radix.
260f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param string
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the string representation of a single byte value.
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param radix
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the radix to use when parsing.
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a {@code Byte} instance containing the byte value represented by
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         {@code string} using {@code radix}.
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @throws NumberFormatException
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             if {@code string} is {@code null} or has a length of zero,
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             {@code radix < Character.MIN_RADIX},
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             {@code radix > Character.MAX_RADIX}, or if {@code string}
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *             can not be parsed as a byte value.
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #parseByte(String, int)
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static Byte valueOf(String string, int radix)
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throws NumberFormatException {
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return valueOf(parseByte(string, radix));
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
278f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Returns a {@code Byte} instance for the specified byte value.
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * If it is not necessary to get a new {@code Byte} instance, it is
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * recommended to use this method instead of the constructor, since it
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * maintains a cache of instances which may result in better performance.
285f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     *
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param b
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *            the byte value to store in the instance.
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return a {@code Byte} instance containing {@code b}.
289f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson     * @since 1.5
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static Byte valueOf(byte b) {
292726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch        return VALUES[b + 128];
293726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    }
294726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch
295726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    /**
296726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch     * A cache of instances used by {@link Byte#valueOf(byte)} and auto-boxing
297726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch     */
298726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    private static final Byte[] VALUES = new Byte[256];
299726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch
300726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch    static {
301726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch        for (int i = -128; i < 128; i++) {
302726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch            VALUES[i + 128] = new Byte((byte) i);
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
306