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 short}. 22726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch * 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see java.lang.Number 24f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.1 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 260d4daefcf389b6433a0af481ef44a84a2546541aElliott Hughes@FindBugsSuppressWarnings("DM_NUMBER_CTOR") 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic final class Short extends Number implements Comparable<Short> { 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 29d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes private static final long serialVersionUID = 7515723908773894738L; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The value which the receiver represents. 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final short value; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constant for the maximum {@code short} value, 2<sup>15</sup>-1. 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final short MAX_VALUE = (short) 0x7FFF; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constant for the minimum {@code short} value, -2<sup>15</sup>. 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final short MIN_VALUE = (short) 0x8000; 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constant for the number of bits needed to represent a {@code short} in 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * two's complement form. 49f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 50f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.5 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static final int SIZE = 16; 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 55f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * The {@link Class} object that represents the primitive type {@code 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * short}. 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @SuppressWarnings("unchecked") 59726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch public static final Class<Short> TYPE 60726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch = (Class<Short>) short[].class.getComponentType(); 61726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch // Note: Short.TYPE can't be set to "short.class", since *that* is 62726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch // defined to be "java.lang.Short.TYPE"; 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new {@code Short} from the specified string. 66f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string representation of a short value. 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 708890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} cannot be parsed as a short value. 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #parseShort(String) 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 73d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes public Short(String string) throws NumberFormatException { 74d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes this(parseShort(string)); 75d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new {@code Short} with the specified primitive short value. 79f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the primitive short value to store in the new instance. 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 83d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes public Short(short value) { 84d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes this.value = value; 85d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 87d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes @Override 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte byteValue() { 89d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return (byte) value; 90d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Compares this object to the specified short object to determine their 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * relative order. 95726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch * 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the short object to compare this object to. 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a negative value if the value of this short is less than the 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * value of {@code object}; 0 if the value of this short and the 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * value of {@code object} are equal; a positive value if the value 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * of this short is greater than the value of {@code object}. 102f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @throws NullPointerException 103f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * if {@code object} is null. 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see java.lang.Comparable 105f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.2 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 107d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes public int compareTo(Short object) { 108c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes return compare(value, object.value); 109c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes } 110c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes 111c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes /** 112c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes * Compares two {@code short} values. 113c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes * @return 0 if lhs = rhs, less than 0 if lhs < rhs, and greater than 0 if lhs > rhs. 114c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes * @since 1.7 115c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes */ 116cbd61d6846af5d48fbb1c34b60a5c74a94f71901Elliott Hughes public static int compare(short lhs, short rhs) { 117c3adcfb1339de546aed6e7ff00a7edb020b8a85bElliott Hughes return lhs > rhs ? 1 : (lhs < rhs ? -1 : 0); 118d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses the specified string and returns a {@code Short} instance if the 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * string can be decoded into a short value. The string may be an optional 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * minus sign "-" followed by a hexadecimal ("0x..." or "#..."), octal 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * ("0..."), or decimal ("...") representation of a short. 125f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * a string representation of a short value. 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a {@code Short} containing the value represented by 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code string}. 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 1318890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} cannot be parsed as a short value. 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 133d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes public static Short decode(String string) throws NumberFormatException { 134d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes int intValue = Integer.decode(string).intValue(); 135d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes short result = (short) intValue; 136d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes if (result == intValue) { 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return valueOf(result); 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1391f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes throw new NumberFormatException("Value out of range for short: \"" + string + "\""); 140d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 142d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes @Override 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public double doubleValue() { 144d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return value; 145d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Compares this instance with the specified object and indicates if they 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * are equal. In order to be equal, {@code object} must be an instance of 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code Short} and have the same short value as this object. 151f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to compare this short with. 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if the specified object is equal to this 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code Short}; {@code false} otherwise. 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 157d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes @Override 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean equals(Object object) { 1590d4daefcf389b6433a0af481ef44a84a2546541aElliott Hughes return (object instanceof Short) && (((Short) object).value == value); 160d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 162d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes @Override 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public float floatValue() { 164d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return value; 165d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 167d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes @Override 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int hashCode() { 169d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return value; 170d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 172d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes @Override 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int intValue() { 174d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return value; 175d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 177d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes @Override 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public long longValue() { 179d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return value; 180d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses the specified string as a signed decimal short value. The ASCII 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * character \u002d ('-') is recognized as the minus sign. 185f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string representation of a short value. 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the primitive short value represented by {@code string}. 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 1908890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} cannot be parsed as a short value. 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 192d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes public static short parseShort(String string) throws NumberFormatException { 193d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return parseShort(string, 10); 194d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses the specified string as a signed short value using the specified 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * radix. The ASCII character \u002d ('-') is recognized as the minus sign. 199f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string representation of a short value. 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param radix 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the radix to use when parsing. 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the primitive short value represented by {@code string} using 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code radix}. 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 2078890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} cannot be parsed as a short value, or 2088890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * {@code radix < Character.MIN_RADIX || 2098890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * radix > Character.MAX_RADIX}. 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2111f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes public static short parseShort(String string, int radix) throws NumberFormatException { 212d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes int intValue = Integer.parseInt(string, radix); 213d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes short result = (short) intValue; 214d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes if (result == intValue) { 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return result; 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 2171f07ea29bc2d334c55c16227582a7795b8c117c1Elliott Hughes throw new NumberFormatException("Value out of range for short: \"" + string + "\""); 218d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Gets the primitive value of this short. 222f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return this object's primitive value. 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public short shortValue() { 227d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return value; 228d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 230d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes @Override 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String toString() { 232d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return Integer.toString(value); 233d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a string containing a concise, human-readable description of the 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * specified short value with radix 10. 238f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param value 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the short to convert to a string. 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a printable representation of {@code value}. 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 243d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes public static String toString(short value) { 244d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return Integer.toString(value); 245d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses the specified string as a signed decimal short value. 249f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string representation of a short value. 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a {@code Short} instance containing the short value represented 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * by {@code string}. 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 2558890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} cannot be parsed as a short value. 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #parseShort(String) 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 258d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes public static Short valueOf(String string) throws NumberFormatException { 259d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return valueOf(parseShort(string)); 260d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Parses the specified string as a signed short value using the specified 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * radix. 265f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param string 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the string representation of a short value. 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param radix 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the radix to use when parsing. 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a {@code Short} instance containing the short value represented 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * by {@code string} using {@code radix}. 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws NumberFormatException 2738890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * if {@code string} cannot be parsed as a short value, or 2748890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * {@code radix < Character.MIN_RADIX || 2758890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes * radix > Character.MAX_RADIX}. 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see #parseShort(String, int) 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 2788890504f824eca28560987cc23d0b18e8a62bbaaElliott Hughes public static Short valueOf(String string, int radix) throws NumberFormatException { 279d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes return valueOf(parseShort(string, radix)); 280d21d78fd49a2d798218e8c8aefbddb26a0e71bbbElliott Hughes } 281726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Reverses the bytes of the specified short. 284726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch * 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param s 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the short value for which to reverse bytes. 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the reversed value. 288f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.5 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static short reverseBytes(short s) { 291726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch return (short) ((s << 8) | ((s >>> 8) & 0xFF)); 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a {@code Short} instance for the specified short value. 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * If it is not necessary to get a new {@code Short} instance, it is 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * recommended to use this method instead of the constructor, since it 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * maintains a cache of instances which may result in better performance. 300f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param s 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the short value to store in the instance. 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a {@code Short} instance containing {@code s}. 304f5597e626ecf7949d249dea08c1a2964d890ec11Jesse Wilson * @since 1.5 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static Short valueOf(short s) { 307726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch return s < -128 || s >= 128 ? new Short(s) : SMALL_VALUES[s + 128]; 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 310726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch /** 311726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch * A cache of instances used by {@link Short#valueOf(short)} and auto-boxing. 312726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch */ 313726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch private static final Short[] SMALL_VALUES = new Short[256]; 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 315726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch static { 3160d4daefcf389b6433a0af481ef44a84a2546541aElliott Hughes for (int i = -128; i < 128; i++) { 317726ac583d69b37db03c6279af5b36df7b837ede1Joshua Bloch SMALL_VALUES[i + 128] = new Short((short) i); 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 321