home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 25 / CDROM25.iso / Share / prog / VJ11 / VJTRIAL.EXE / IE30Java.exe / classd.exe / java / lang / String.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-01-27  |  7.5 KB  |  578 lines

  1. package java.lang;
  2.  
  3. import java.util.Hashtable;
  4.  
  5. public final class String {
  6.    private char[] value;
  7.    private int offset;
  8.    private int count;
  9.    private static Hashtable InternSet;
  10.  
  11.    public String() {
  12.       this.value = new char[0];
  13.    }
  14.  
  15.    public String(String var1) {
  16.       this.count = var1.length();
  17.       this.value = new char[this.count];
  18.       var1.getChars(0, this.count, this.value, 0);
  19.    }
  20.  
  21.    public String(char[] var1) {
  22.       this.count = var1.length;
  23.       this.value = new char[this.count];
  24.       System.arraycopy(var1, 0, this.value, 0, this.count);
  25.    }
  26.  
  27.    public String(char[] var1, int var2, int var3) {
  28.       if (var2 < 0) {
  29.          throw new StringIndexOutOfBoundsException(var2);
  30.       } else if (var3 < 0) {
  31.          throw new StringIndexOutOfBoundsException(var3);
  32.       } else if (var2 + var3 > var1.length) {
  33.          throw new StringIndexOutOfBoundsException(var2 + var3);
  34.       } else {
  35.          this.value = new char[var3];
  36.          this.count = var3;
  37.          System.arraycopy(var1, var2, this.value, 0, var3);
  38.       }
  39.    }
  40.  
  41.    public String(byte[] var1, int var2, int var3, int var4) {
  42.       if (var3 < 0) {
  43.          throw new StringIndexOutOfBoundsException(var3);
  44.       } else if (var4 < 0) {
  45.          throw new StringIndexOutOfBoundsException(var4);
  46.       } else if (var3 + var4 > var1.length) {
  47.          throw new StringIndexOutOfBoundsException(var3 + var4);
  48.       } else {
  49.          char[] var5 = new char[var4];
  50.          this.count = var4;
  51.          this.value = var5;
  52.          if (var2 == 0) {
  53.             for(int var8 = var4; var8-- > 0; var5[var8] = (char)(var1[var8 + var3] & 255)) {
  54.             }
  55.  
  56.          } else {
  57.             var2 <<= 8;
  58.  
  59.             for(int var6 = var4; var6-- > 0; var5[var6] = (char)(var2 | var1[var6 + var3] & 255)) {
  60.             }
  61.  
  62.          }
  63.       }
  64.    }
  65.  
  66.    public String(byte[] var1, int var2) {
  67.       this(var1, var2, 0, var1.length);
  68.    }
  69.  
  70.    public String(StringBuffer var1) {
  71.       synchronized(var1){}
  72.  
  73.       try {
  74.          var1.setShared();
  75.          this.value = var1.getValue();
  76.          this.offset = 0;
  77.          this.count = var1.length();
  78.       } catch (Throwable var4) {
  79.          throw var4;
  80.       }
  81.  
  82.    }
  83.  
  84.    private String(int var1, int var2, char[] var3) {
  85.       this.value = var3;
  86.       this.offset = var1;
  87.       this.count = var2;
  88.    }
  89.  
  90.    public int length() {
  91.       return this.count;
  92.    }
  93.  
  94.    public char charAt(int var1) {
  95.       if (var1 >= 0 && var1 < this.count) {
  96.          return this.value[var1 + this.offset];
  97.       } else {
  98.          throw new StringIndexOutOfBoundsException(var1);
  99.       }
  100.    }
  101.  
  102.    public void getChars(int var1, int var2, char[] var3, int var4) {
  103.       System.arraycopy(this.value, this.offset + var1, var3, var4, var2 - var1);
  104.    }
  105.  
  106.    public void getBytes(int var1, int var2, byte[] var3, int var4) {
  107.       int var5 = var4;
  108.       int var6 = this.offset + var2;
  109.  
  110.       for(int var7 = this.offset + var1; var7 < var6; var3[var5++] = (byte)this.value[var7++]) {
  111.       }
  112.  
  113.    }
  114.  
  115.    public boolean equals(Object var1) {
  116.       if (var1 != null && var1 instanceof String) {
  117.          String var2 = (String)var1;
  118.          int var3 = this.count;
  119.          if (var3 == var2.count) {
  120.             char[] var4 = this.value;
  121.             char[] var5 = var2.value;
  122.             int var6 = this.offset;
  123.             int var7 = var2.offset;
  124.  
  125.             while(var3-- != 0) {
  126.                if (var4[var6++] != var5[var7++]) {
  127.                   return false;
  128.                }
  129.             }
  130.  
  131.             return true;
  132.          }
  133.       }
  134.  
  135.       return false;
  136.    }
  137.  
  138.    public boolean equalsIgnoreCase(String var1) {
  139.       return var1 != null && var1.count == this.count && this.regionMatches(true, 0, var1, 0, this.count);
  140.    }
  141.  
  142.    public int compareTo(String var1) {
  143.       int var2 = this.count;
  144.       int var3 = var1.count;
  145.       int var4 = Math.min(var2, var3);
  146.       char[] var5 = this.value;
  147.       char[] var6 = var1.value;
  148.       int var7 = this.offset;
  149.       int var8 = var1.offset;
  150.  
  151.       while(var4-- != 0) {
  152.          char var9 = var5[var7++];
  153.          char var10 = var6[var8++];
  154.          if (var9 != var10) {
  155.             return var9 - var10;
  156.          }
  157.       }
  158.  
  159.       return var2 - var3;
  160.    }
  161.  
  162.    public boolean regionMatches(int var1, String var2, int var3, int var4) {
  163.       char[] var5 = this.value;
  164.       int var6 = this.offset + var1;
  165.       int var7 = this.offset + this.count;
  166.       char[] var8 = var2.value;
  167.       int var9 = var2.offset + var3;
  168.       int var10 = var9 + var2.count;
  169.       if (var3 >= 0 && var1 >= 0 && var6 + var4 <= var7 && var9 + var4 <= var10) {
  170.          while(var4-- > 0) {
  171.             if (var5[var6++] != var8[var9++]) {
  172.                return false;
  173.             }
  174.          }
  175.  
  176.          return true;
  177.       } else {
  178.          return false;
  179.       }
  180.    }
  181.  
  182.    public boolean regionMatches(boolean var1, int var2, String var3, int var4, int var5) {
  183.       char[] var6 = this.value;
  184.       int var7 = this.offset + var2;
  185.       int var8 = this.offset + this.count;
  186.       char[] var9 = var3.value;
  187.       int var10 = var3.offset + var4;
  188.       int var11 = var10 + var3.count;
  189.       if (var4 >= 0 && var2 >= 0 && var7 + var5 <= var8 && var10 + var5 <= var11) {
  190.          while(true) {
  191.             if (var5-- <= 0) {
  192.                return true;
  193.             }
  194.  
  195.             char var12 = var6[var7++];
  196.             char var13 = var9[var10++];
  197.             if (var12 != var13) {
  198.                if (!var1) {
  199.                   break;
  200.                }
  201.  
  202.                char var14 = Character.toUpperCase(var12);
  203.                char var15 = Character.toUpperCase(var13);
  204.                if (var14 != var15 && Character.toLowerCase(var14) != Character.toLowerCase(var15)) {
  205.                   break;
  206.                }
  207.             }
  208.          }
  209.  
  210.          return false;
  211.       } else {
  212.          return false;
  213.       }
  214.    }
  215.  
  216.    public boolean startsWith(String var1, int var2) {
  217.       char[] var3 = this.value;
  218.       int var4 = this.offset + var2;
  219.       int var5 = this.offset + this.count;
  220.       char[] var6 = var1.value;
  221.       int var7 = var1.offset;
  222.       int var8 = var1.count;
  223.       if (var2 >= 0 && var4 + var8 <= var5) {
  224.          do {
  225.             --var8;
  226.             if (var8 < 0) {
  227.                return true;
  228.             }
  229.          } while(var3[var4++] == var6[var7++]);
  230.  
  231.          return false;
  232.       } else {
  233.          return false;
  234.       }
  235.    }
  236.  
  237.    public boolean startsWith(String var1) {
  238.       return this.startsWith(var1, 0);
  239.    }
  240.  
  241.    public boolean endsWith(String var1) {
  242.       return this.startsWith(var1, this.count - var1.count);
  243.    }
  244.  
  245.    public int hashCode() {
  246.       int var1 = 0;
  247.       int var2 = this.offset;
  248.       char[] var3 = this.value;
  249.       int var4 = this.count;
  250.       if (var4 < 16) {
  251.          for(int var5 = var4; var5 > 0; --var5) {
  252.             var1 = var1 * 37 + var3[var2++];
  253.          }
  254.       } else {
  255.          int var7 = var4 / 8;
  256.  
  257.          for(int var6 = var4; var6 > 0; var2 += var7) {
  258.             var1 = var1 * 39 + var3[var2];
  259.             var6 -= var7;
  260.          }
  261.       }
  262.  
  263.       return var1;
  264.    }
  265.  
  266.    public int indexOf(int var1) {
  267.       return this.indexOf(var1, 0);
  268.    }
  269.  
  270.    public int indexOf(int var1, int var2) {
  271.       int var3 = this.offset + this.count;
  272.       char[] var4 = this.value;
  273.  
  274.       for(int var5 = this.offset + var2; var5 < var3; ++var5) {
  275.          if (var4[var5] == var1) {
  276.             return var5 - this.offset;
  277.          }
  278.       }
  279.  
  280.       return -1;
  281.    }
  282.  
  283.    public int lastIndexOf(int var1) {
  284.       return this.lastIndexOf(var1, this.count - 1);
  285.    }
  286.  
  287.    public int lastIndexOf(int var1, int var2) {
  288.       int var3 = this.offset;
  289.       char[] var4 = this.value;
  290.  
  291.       for(int var5 = this.offset + (var2 >= this.count ? this.count - 1 : var2); var5 >= var3; --var5) {
  292.          if (var4[var5] == var1) {
  293.             return var5 - this.offset;
  294.          }
  295.       }
  296.  
  297.       return -1;
  298.    }
  299.  
  300.    public int indexOf(String var1) {
  301.       return this.indexOf(var1, 0);
  302.    }
  303.  
  304.    public int indexOf(String var1, int var2) {
  305.       char[] var3 = this.value;
  306.       char[] var4 = var1.value;
  307.       int var5 = this.offset + (this.count - var1.count);
  308.       int var6 = this.offset + (var2 < 0 ? 0 : var2);
  309.  
  310.       label27:
  311.       while(var6 <= var5) {
  312.          int var7 = var1.count;
  313.          int var8 = var6;
  314.          int var9 = var1.offset;
  315.  
  316.          while(var7-- != 0) {
  317.             if (var3[var8++] != var4[var9++]) {
  318.                ++var6;
  319.                continue label27;
  320.             }
  321.          }
  322.  
  323.          return var6 - this.offset;
  324.       }
  325.  
  326.       return -1;
  327.    }
  328.  
  329.    public int lastIndexOf(String var1) {
  330.       return this.lastIndexOf(var1, this.count);
  331.    }
  332.  
  333.    public int lastIndexOf(String var1, int var2) {
  334.       if (var2 < 0) {
  335.          return -1;
  336.       } else {
  337.          if (var2 > this.count - var1.count) {
  338.             var2 = this.count - var1.count;
  339.          }
  340.  
  341.          if (var1.count == 0) {
  342.             return var2;
  343.          } else {
  344.             char[] var3 = this.value;
  345.             char[] var4 = var1.value;
  346.  
  347.             for(int var5 = this.offset + var2; var5 >= this.offset; --var5) {
  348.                int var6 = var1.count;
  349.                int var7 = var5;
  350.                int var8 = var1.offset;
  351.  
  352.                while(var3[var7++] == var4[var8++]) {
  353.                   --var6;
  354.                   if (var6 <= 0) {
  355.                      return var5 - this.offset;
  356.                   }
  357.                }
  358.             }
  359.  
  360.             return -1;
  361.          }
  362.       }
  363.    }
  364.  
  365.    public String substring(int var1) {
  366.       return this.substring(var1, this.length());
  367.    }
  368.  
  369.    public String substring(int var1, int var2) {
  370.       if (var1 > var2) {
  371.          int var3 = var1;
  372.          var1 = var2;
  373.          var2 = var3;
  374.       }
  375.  
  376.       if (var1 < 0) {
  377.          throw new StringIndexOutOfBoundsException(var1);
  378.       } else if (var2 > this.count) {
  379.          throw new StringIndexOutOfBoundsException(var2);
  380.       } else {
  381.          return var1 == 0 && var2 == this.count ? this : new String(this.offset + var1, var2 - var1, this.value);
  382.       }
  383.    }
  384.  
  385.    public String concat(String var1) {
  386.       int var2 = var1.length();
  387.       if (var2 == 0) {
  388.          return this;
  389.       } else {
  390.          char[] var3 = new char[this.count + var2];
  391.          this.getChars(0, this.count, var3, 0);
  392.          var1.getChars(0, var2, var3, this.count);
  393.          return new String(0, this.count + var2, var3);
  394.       }
  395.    }
  396.  
  397.    public String replace(char var1, char var2) {
  398.       if (var1 != var2) {
  399.          int var3 = this.count;
  400.          int var4 = -1;
  401.  
  402.          do {
  403.             ++var4;
  404.          } while(var4 < var3 && this.value[this.offset + var4] != var1);
  405.  
  406.          if (var4 < var3) {
  407.             char[] var5 = new char[var3];
  408.  
  409.             for(int var6 = 0; var6 < var4; ++var6) {
  410.                var5[var6] = this.value[this.offset + var6];
  411.             }
  412.  
  413.             while(var4 < var3) {
  414.                char var7 = this.value[this.offset + var4];
  415.                var5[var4] = var7 == var1 ? var2 : var7;
  416.                ++var4;
  417.             }
  418.  
  419.             return new String(0, var3, var5);
  420.          }
  421.       }
  422.  
  423.       return this;
  424.    }
  425.  
  426.    public String toLowerCase() {
  427.       int var1 = this.count;
  428.  
  429.       for(int var2 = 0; var2 < var1; ++var2) {
  430.          char var5 = this.value[this.offset + var2];
  431.          char var4 = Character.toLowerCase(var5);
  432.          if (var5 != var4) {
  433.             char[] var7 = new char[var1];
  434.  
  435.             int var3;
  436.             for(var3 = 0; var3 < var2; ++var3) {
  437.                var7[var3] = this.value[this.offset + var3];
  438.             }
  439.  
  440.             for(var7[var3++] = var4; var3 < var1; ++var3) {
  441.                var7[var3] = Character.toLowerCase(this.value[this.offset + var3]);
  442.             }
  443.  
  444.             return new String(0, var1, var7);
  445.          }
  446.       }
  447.  
  448.       return this;
  449.    }
  450.  
  451.    public String toUpperCase() {
  452.       int var1 = this.count;
  453.  
  454.       for(int var2 = 0; var2 < var1; ++var2) {
  455.          char var5 = this.value[this.offset + var2];
  456.          char var4 = Character.toUpperCase(var5);
  457.          if (var5 != var4) {
  458.             char[] var7 = new char[var1];
  459.  
  460.             int var3;
  461.             for(var3 = 0; var3 < var2; ++var3) {
  462.                var7[var3] = this.value[this.offset + var3];
  463.             }
  464.  
  465.             for(var7[var3++] = var4; var3 < var1; ++var3) {
  466.                var7[var3] = Character.toUpperCase(this.value[this.offset + var3]);
  467.             }
  468.  
  469.             return new String(0, var1, var7);
  470.          }
  471.       }
  472.  
  473.       return this;
  474.    }
  475.  
  476.    public String trim() {
  477.       int var1 = this.count;
  478.  
  479.       int var2;
  480.       for(var2 = 0; var2 < var1 && this.value[this.offset + var2] <= ' '; ++var2) {
  481.       }
  482.  
  483.       while(var2 < var1 && this.value[this.offset + var1 - 1] <= ' ') {
  484.          --var1;
  485.       }
  486.  
  487.       return var2 <= 0 && var1 >= this.count ? this : this.substring(var2, var1);
  488.    }
  489.  
  490.    public String toString() {
  491.       return this;
  492.    }
  493.  
  494.    public char[] toCharArray() {
  495.       int var1 = this.length();
  496.       char[] var2 = new char[var1];
  497.       this.getChars(0, var1, var2, 0);
  498.       return var2;
  499.    }
  500.  
  501.    public static String valueOf(Object var0) {
  502.       return var0 == null ? "null" : var0.toString();
  503.    }
  504.  
  505.    public static String valueOf(char[] var0) {
  506.       return new String(var0);
  507.    }
  508.  
  509.    public static String valueOf(char[] var0, int var1, int var2) {
  510.       return new String(var0, var1, var2);
  511.    }
  512.  
  513.    public static String copyValueOf(char[] var0, int var1, int var2) {
  514.       return new String(var0, var1, var2);
  515.    }
  516.  
  517.    public static String copyValueOf(char[] var0) {
  518.       return copyValueOf(var0, 0, var0.length);
  519.    }
  520.  
  521.    public static String valueOf(boolean var0) {
  522.       return var0 ? "true" : "false";
  523.    }
  524.  
  525.    public static String valueOf(char var0) {
  526.       char[] var1 = new char[]{var0};
  527.       return new String(0, 1, var1);
  528.    }
  529.  
  530.    public static String valueOf(int var0) {
  531.       return Integer.toString(var0, 10);
  532.    }
  533.  
  534.    public static String valueOf(long var0) {
  535.       return Long.toString(var0, 10);
  536.    }
  537.  
  538.    public static String valueOf(float var0) {
  539.       return Float.toString(var0);
  540.    }
  541.  
  542.    public static String valueOf(double var0) {
  543.       return Double.toString(var0);
  544.    }
  545.  
  546.    public String intern() {
  547.       if (InternSet == null) {
  548.          InternSet = new Hashtable();
  549.       }
  550.  
  551.       String var1 = (String)InternSet.get(this);
  552.       if (var1 != null) {
  553.          return var1;
  554.       } else {
  555.          InternSet.put(this, this);
  556.          return this;
  557.       }
  558.    }
  559.  
  560.    int utfLength() {
  561.       int var1 = this.offset + this.count;
  562.       int var2 = 0;
  563.  
  564.       for(int var3 = this.offset; var3 < var1; ++var3) {
  565.          char var4 = this.value[var3];
  566.          if (var4 >= 1 && var4 <= 127) {
  567.             ++var2;
  568.          } else if (var4 > 2047) {
  569.             var2 += 3;
  570.          } else {
  571.             var2 += 2;
  572.          }
  573.       }
  574.  
  575.       return var2;
  576.    }
  577. }
  578.