home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / java / lang / integer.java < prev    next >
Text File  |  1995-08-11  |  7KB  |  257 lines

  1. /*
  2.  * @(#)Integer.java    1.13 95/05/18  
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. package java.lang;
  21.  
  22. /**
  23.  * The Integer class is a wrapper integer values.
  24.  * @version     1.13, 18 May 1995
  25.  * @author    Lee Boynton
  26.  * @author    Arthur van Hoff
  27.  */
  28. public final
  29. class Integer extends Number {
  30.     /**
  31.      * The minimum value an integer can have.
  32.      */
  33.     public static final int   MIN_VALUE = 0x80000000;
  34.  
  35.     /**
  36.      * The maximum value an integer can have.
  37.      */
  38.     public static final int   MAX_VALUE = 0x7fffffff;
  39.  
  40.     /**
  41.      * Returns a string object representing the specified integer in
  42.      * the specified radix.
  43.      * @param i        the integer to be converted
  44.      * @param radix    the radix
  45.      * @return         a string representation of the integer
  46.      * @see Character#MIN_RADIX
  47.      * @see Character#MAX_RADIX
  48.      */
  49.     public static String toString(int i, int radix) {
  50.     StringBuffer buf;
  51.     int digitCount = 0;
  52.     boolean minval = false;
  53.     boolean negative = false;
  54.     if (i == 0x80000000) {
  55.         if (radix == 2)
  56.         return "1000000000000000000000000000000";
  57.         minval = true;
  58.         negative = true;
  59.         i = MAX_VALUE;
  60.     } else if (i < 0) {
  61.         i = -i;
  62.         negative = true;
  63.     }
  64.     buf = new StringBuffer(32);
  65.     while (i > 0) {
  66.         if (i < radix) {
  67.         buf.appendChar(Character.forDigit(i,radix));
  68.         i = 0;
  69.         } else {
  70.         int j = i % radix;
  71.         i = i / radix;
  72.         buf.appendChar(Character.forDigit(j,radix));
  73.         }
  74.         digitCount++;
  75.     }
  76.     if (digitCount > 0) {
  77.         int j = buf.length();
  78.         int k = 0;
  79.         char tmp[];
  80.         if (negative) {
  81.         tmp = new char[j + 1];
  82.         tmp[0] = '-';
  83.         k = 1;
  84.         } else {
  85.         tmp = new char[j];
  86.         }
  87.         i = 0;
  88.         while (j-- > 0) {
  89.         tmp[j+k] = buf.charAt(i++);
  90.         }
  91.         if (minval) {
  92.         tmp[tmp.length-1]++;
  93.         }
  94.         return String.valueOf(tmp);
  95.     } else
  96.         return "0";
  97.     }
  98.  
  99.     /**
  100.      * Returns a String object representing an integer. The radix
  101.      * is assumed to be 10.
  102.      * @param i    the integer to be converted
  103.      * @return     a string representation of the integer
  104.      */
  105.     public static String toString(int i) {
  106.     return toString(i,10);
  107.     }
  108.     
  109.     /**
  110.      * Assuming the string represents an integer, returns that integer's
  111.      * value. Throws an error if the string cannot be parsed as an int.
  112.      * @param s        the string containing the integer
  113.      * @param radix     the radix to be used
  114.      * @return         the integer value of the string
  115.      * @exception    NumberFormatException The string does not contain a parsable integer
  116.      */
  117.     public static int parseInt(String s, int radix) {
  118.     int result = 0;
  119.     boolean negative = false;
  120.     int i=0, max = s.length();
  121.     if (max > 0) {
  122.         if (s.charAt(0) == '-') {
  123.         negative = true;
  124.         i++;
  125.         }
  126.         while (i < max) {
  127.         int digit = Character.digit(s.charAt(i++),radix);
  128.         if (digit < 0)
  129.             throw new NumberFormatException(s);
  130.         result = result * radix + digit;
  131.         }
  132.     } else
  133.         throw new NumberFormatException(s);
  134.     if (negative)
  135.         return -result;
  136.     else
  137.         return result;
  138.     }
  139.  
  140.     /**
  141.      * Assuming the string represents an integer, returns that integer's
  142.      * value. Throws an error if the string cannot be parsed as an int.
  143.      * The radix is assumed to be 10.
  144.      * @param s        the string containing the integer
  145.      * @return        the integer value of the string
  146.      * @exception    NumberFormatException The string does not contain a parsable integer
  147.      */
  148.     public static int parseInt(String s) {
  149.     return parseInt(s,10);
  150.     }
  151.  
  152.     /**
  153.      * Assuming the string represents an integer, returns a new Integer
  154.      * object with that value. Throws an error if the string cannot be
  155.      * parsed as an int.
  156.      * @param s        the string containing the integer
  157.      * @param radix     the radix to be used
  158.      * @return         a integer object representing the integer value of the string
  159.      * @exception    NumberFormatException The string does not contain a parsable integer
  160.      */
  161.     public static Integer valueOf(String s, int radix) {
  162.     return new Integer(parseInt(s,radix));
  163.     }
  164.  
  165.     /**
  166.      * Assuming the string represents an integer, returns a new Integer
  167.      * object with that value. Throws an error if the string cannot be
  168.      * parsed as an int. The radix is assumed to be 10.
  169.      * @param s        the string containing the integer
  170.      * @param radix     the radix to be used
  171.      * @return         a integer object representing the integer value of the string
  172.      * @exception    NumberFormatException the string does not contain a parsable integer
  173.      */
  174.     public static native Integer valueOf(String s);
  175.  
  176.     /**
  177.      * The value of the integer.
  178.      */
  179.     private int value;
  180.  
  181.     /**
  182.      * Constructs an Integer object with the specified integer value.
  183.      * @param value    the value of the integer
  184.      */
  185.     public Integer(int value) {
  186.     this.value = value;
  187.     }
  188.  
  189.     /**
  190.      * Constructs an Integer object with the specified string value.
  191.      * The radix is assumed to be 10.
  192.      * @param s        the string to be converted
  193.      * @exception    NumberFormatException the string does not contain a parsable integer
  194.      */
  195.     public Integer(String s) {
  196.     this.value = parseInt(s, 10);
  197.     }
  198.  
  199.     /**
  200.      * Returns the int value of the Integer.
  201.      */
  202.     public int intValue() {
  203.     return value;
  204.     }
  205.  
  206.     /**
  207.      * Returns the long value of the Integer.
  208.      */
  209.     public long longValue() {
  210.     return (long)value;
  211.     }
  212.  
  213.     /**
  214.      * Returns the float value of the Integer.
  215.      */
  216.     public float floatValue() {
  217.     return (float)value;
  218.     }
  219.  
  220.     /**
  221.      * Returns the double value of the Integer.
  222.      */
  223.     public double doubleValue() {
  224.     return (double)value;
  225.     }
  226.  
  227.     /**
  228.      * Returns a String object representing this integer's value.
  229.      * @return a String representing the value of the integer.
  230.      */
  231.     public String toString() {
  232.     return String.valueOf(value);
  233.     }
  234.  
  235.     /**
  236.      * Returns a hashcode for this integer.
  237.      * @return the hashcode
  238.      */
  239.     public int hashCode() {
  240.     return value;
  241.     }
  242.  
  243.     /**
  244.      * Compares this object against some other object.
  245.      * @param obj        the object to compare with
  246.      * @return         true if the object is the same
  247.      */
  248.     public boolean equals(Object obj) {
  249.     if ((obj != null) && (obj instanceof Integer)) {
  250.         return value == ((Integer)obj).intValue();
  251.     }
  252.     return false;
  253.     }
  254.  
  255. }
  256.  
  257.