home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / lang / String.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  9.2 KB  |  777 lines

  1. package java.lang;
  2.  
  3. import java.io.CharConversionException;
  4. import java.io.ObjectStreamField;
  5. import java.io.Serializable;
  6. import java.io.UnsupportedEncodingException;
  7. import java.lang.ref.SoftReference;
  8. import java.util.Comparator;
  9. import java.util.Locale;
  10. import sun.io.ByteToCharConverter;
  11. import sun.io.CharToByteConverter;
  12.  
  13. public final class String implements Serializable, Comparable {
  14.    private char[] value;
  15.    private int offset;
  16.    private int count;
  17.    private int hash;
  18.    private static ThreadLocal btcConverter = null;
  19.    private static ThreadLocal ctbConverter = null;
  20.    private static final long serialVersionUID = -6849794470754667710L;
  21.    private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];
  22.    public static final Comparator CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator((1)null);
  23.  
  24.    private static ByteToCharConverter getBTCConverter(String var0) throws UnsupportedEncodingException {
  25.       Object var1 = null;
  26.       if (btcConverter == null) {
  27.          btcConverter = new ThreadLocal();
  28.       }
  29.  
  30.       SoftReference var2 = (SoftReference)btcConverter.get();
  31.       ByteToCharConverter var3;
  32.       if (var2 != null && (var3 = (ByteToCharConverter)var2.get()) != null && var0.equals(var3.getCharacterEncoding())) {
  33.          var3.reset();
  34.       } else {
  35.          var3 = ByteToCharConverter.getConverter(var0);
  36.          btcConverter.set(new SoftReference(var3));
  37.       }
  38.  
  39.       return var3;
  40.    }
  41.  
  42.    private static CharToByteConverter getCTBConverter(String var0) throws UnsupportedEncodingException {
  43.       Object var1 = null;
  44.       if (ctbConverter == null) {
  45.          ctbConverter = new ThreadLocal();
  46.       }
  47.  
  48.       SoftReference var2 = (SoftReference)ctbConverter.get();
  49.       CharToByteConverter var3;
  50.       if (var2 != null && (var3 = (CharToByteConverter)var2.get()) != null && var0.equals(var3.getCharacterEncoding())) {
  51.          var3.reset();
  52.       } else {
  53.          var3 = CharToByteConverter.getConverter(var0);
  54.          ctbConverter.set(new SoftReference(var3));
  55.       }
  56.  
  57.       return var3;
  58.    }
  59.  
  60.    public String() {
  61.       this.hash = 0;
  62.       this.value = new char[0];
  63.    }
  64.  
  65.    public String(String var1) {
  66.       this.hash = 0;
  67.       this.count = var1.length();
  68.       this.value = new char[this.count];
  69.       var1.getChars(0, this.count, this.value, 0);
  70.    }
  71.  
  72.    public String(char[] var1) {
  73.       this.hash = 0;
  74.       this.count = var1.length;
  75.       this.value = new char[this.count];
  76.       System.arraycopy(var1, 0, this.value, 0, this.count);
  77.    }
  78.  
  79.    public String(char[] var1, int var2, int var3) {
  80.       this.hash = 0;
  81.       if (var2 < 0) {
  82.          throw new StringIndexOutOfBoundsException(var2);
  83.       } else if (var3 < 0) {
  84.          throw new StringIndexOutOfBoundsException(var3);
  85.       } else if (var2 > var1.length - var3) {
  86.          throw new StringIndexOutOfBoundsException(var2 + var3);
  87.       } else {
  88.          this.value = new char[var3];
  89.          this.count = var3;
  90.          System.arraycopy(var1, var2, this.value, 0, var3);
  91.       }
  92.    }
  93.  
  94.    public String(byte[] var1, int var2, int var3, int var4) {
  95.       this.hash = 0;
  96.       if (var3 < 0) {
  97.          throw new StringIndexOutOfBoundsException(var3);
  98.       } else if (var4 < 0) {
  99.          throw new StringIndexOutOfBoundsException(var4);
  100.       } else if (var3 > var1.length - var4) {
  101.          throw new StringIndexOutOfBoundsException(var3 + var4);
  102.       } else {
  103.          char[] var5 = new char[var4];
  104.          this.count = var4;
  105.          this.value = var5;
  106.          if (var2 == 0) {
  107.             for(int var6 = var4; var6-- > 0; var5[var6] = (char)(var1[var6 + var3] & 255)) {
  108.             }
  109.          } else {
  110.             var2 <<= 8;
  111.  
  112.             for(int var8 = var4; var8-- > 0; var5[var8] = (char)(var2 | var1[var8 + var3] & 255)) {
  113.             }
  114.          }
  115.  
  116.       }
  117.    }
  118.  
  119.    public String(byte[] var1, int var2) {
  120.       this(var1, var2, 0, var1.length);
  121.    }
  122.  
  123.    private String(byte[] var1, int var2, int var3, ByteToCharConverter var4) {
  124.       this.hash = 0;
  125.       if (var3 < 0) {
  126.          throw new StringIndexOutOfBoundsException("length must be >= 0");
  127.       } else if (var2 < 0) {
  128.          throw new StringIndexOutOfBoundsException("offset must be >= 0");
  129.       } else if (var2 > var1.length - var3) {
  130.          throw new StringIndexOutOfBoundsException(var2 + this.count);
  131.       } else {
  132.          int var5 = var4.getMaxCharsPerByte() * var3;
  133.          this.value = new char[var5];
  134.  
  135.          try {
  136.             this.count = var4.convert(var1, var2, var2 + var3, this.value, 0, var5);
  137.             this.count += var4.flush(this.value, var4.nextCharIndex(), var5);
  138.          } catch (CharConversionException var7) {
  139.             this.count = var4.nextCharIndex();
  140.          }
  141.  
  142.          if (this.count < var5) {
  143.             char[] var6 = new char[this.count];
  144.             System.arraycopy(this.value, 0, var6, 0, this.count);
  145.             this.value = var6;
  146.          }
  147.  
  148.       }
  149.    }
  150.  
  151.    public String(byte[] var1, int var2, int var3, String var4) throws UnsupportedEncodingException {
  152.       this(var1, var2, var3, getBTCConverter(var4));
  153.    }
  154.  
  155.    public String(byte[] var1, String var2) throws UnsupportedEncodingException {
  156.       this(var1, 0, var1.length, (String)var2);
  157.    }
  158.  
  159.    public String(byte[] var1, int var2, int var3) {
  160.       this(var1, var2, var3, ByteToCharConverter.getDefault());
  161.    }
  162.  
  163.    public String(byte[] var1) {
  164.       this(var1, 0, var1.length, (ByteToCharConverter)ByteToCharConverter.getDefault());
  165.    }
  166.  
  167.    public String(StringBuffer var1) {
  168.       this.hash = 0;
  169.       synchronized(var1) {
  170.          var1.setShared();
  171.          this.value = var1.getValue();
  172.          this.offset = 0;
  173.          this.count = var1.length();
  174.       }
  175.    }
  176.  
  177.    private String(int var1, int var2, char[] var3) {
  178.       this.hash = 0;
  179.       this.value = var3;
  180.       this.offset = var1;
  181.       this.count = var2;
  182.    }
  183.  
  184.    public int length() {
  185.       return this.count;
  186.    }
  187.  
  188.    public char charAt(int var1) {
  189.       if (var1 >= 0 && var1 < this.count) {
  190.          return this.value[var1 + this.offset];
  191.       } else {
  192.          throw new StringIndexOutOfBoundsException(var1);
  193.       }
  194.    }
  195.  
  196.    public void getChars(int var1, int var2, char[] var3, int var4) {
  197.       if (var1 < 0) {
  198.          throw new StringIndexOutOfBoundsException(var1);
  199.       } else if (var2 > this.count) {
  200.          throw new StringIndexOutOfBoundsException(var2);
  201.       } else if (var1 > var2) {
  202.          throw new StringIndexOutOfBoundsException(var2 - var1);
  203.       } else {
  204.          System.arraycopy(this.value, this.offset + var1, var3, var4, var2 - var1);
  205.       }
  206.    }
  207.  
  208.    public void getBytes(int var1, int var2, byte[] var3, int var4) {
  209.       if (var1 < 0) {
  210.          throw new StringIndexOutOfBoundsException(var1);
  211.       } else if (var2 > this.count) {
  212.          throw new StringIndexOutOfBoundsException(var2);
  213.       } else if (var1 > var2) {
  214.          throw new StringIndexOutOfBoundsException(var2 - var1);
  215.       } else {
  216.          int var5 = var4;
  217.          int var6 = this.offset + var2;
  218.          int var7 = this.offset + var1;
  219.  
  220.          for(char[] var8 = this.value; var7 < var6; var3[var5++] = (byte)var8[var7++]) {
  221.          }
  222.  
  223.       }
  224.    }
  225.  
  226.    private byte[] getBytes(CharToByteConverter var1) {
  227.       var1.reset();
  228.       int var2 = var1.getMaxBytesPerChar() * this.count;
  229.       byte[] var3 = new byte[var2];
  230.       int var4 = 0;
  231.  
  232.       try {
  233.          var4 += var1.convertAny(this.value, this.offset, this.offset + this.count, var3, 0, var2);
  234.          var4 += var1.flushAny(var3, var1.nextByteIndex(), var2);
  235.       } catch (CharConversionException var6) {
  236.          throw new InternalError("Converter malfunction: " + var1.getClass().getName());
  237.       }
  238.  
  239.       if (var4 < var2) {
  240.          byte[] var5 = new byte[var4];
  241.          System.arraycopy(var3, 0, var5, 0, var4);
  242.          return var5;
  243.       } else {
  244.          return var3;
  245.       }
  246.    }
  247.  
  248.    public byte[] getBytes(String var1) throws UnsupportedEncodingException {
  249.       return this.getBytes(getCTBConverter(var1));
  250.    }
  251.  
  252.    public byte[] getBytes() {
  253.       return this.getBytes(CharToByteConverter.getDefault());
  254.    }
  255.  
  256.    public boolean equals(Object var1) {
  257.       if (this == var1) {
  258.          return true;
  259.       } else {
  260.          if (var1 instanceof String) {
  261.             String var2 = (String)var1;
  262.             int var3 = this.count;
  263.             if (var3 == var2.count) {
  264.                char[] var4 = this.value;
  265.                char[] var5 = var2.value;
  266.                int var6 = this.offset;
  267.                int var7 = var2.offset;
  268.  
  269.                while(var3-- != 0) {
  270.                   if (var4[var6++] != var5[var7++]) {
  271.                      return false;
  272.                   }
  273.                }
  274.  
  275.                return true;
  276.             }
  277.          }
  278.  
  279.          return false;
  280.       }
  281.    }
  282.  
  283.    public boolean equalsIgnoreCase(String var1) {
  284.       return var1 != null && var1.count == this.count && this.regionMatches(true, 0, var1, 0, this.count);
  285.    }
  286.  
  287.    public int compareTo(String var1) {
  288.       int var2 = this.count;
  289.       int var3 = var1.count;
  290.       int var4 = Math.min(var2, var3);
  291.       char[] var5 = this.value;
  292.       char[] var6 = var1.value;
  293.       int var7 = this.offset;
  294.       int var8 = var1.offset;
  295.  
  296.       while(var4-- != 0) {
  297.          char var9 = var5[var7++];
  298.          char var10 = var6[var8++];
  299.          if (var9 != var10) {
  300.             return var9 - var10;
  301.          }
  302.       }
  303.  
  304.       return var2 - var3;
  305.    }
  306.  
  307.    public int compareTo(Object var1) {
  308.       return this.compareTo((String)var1);
  309.    }
  310.  
  311.    public int compareToIgnoreCase(String var1) {
  312.       return CASE_INSENSITIVE_ORDER.compare(this, var1);
  313.    }
  314.  
  315.    public boolean regionMatches(int var1, String var2, int var3, int var4) {
  316.       char[] var5 = this.value;
  317.       int var6 = this.offset + var1;
  318.       int var10000 = this.offset + this.count;
  319.       char[] var8 = var2.value;
  320.       int var9 = var2.offset + var3;
  321.       if (var3 >= 0 && var1 >= 0 && (long)var1 <= (long)this.count - (long)var4 && (long)var3 <= (long)var2.count - (long)var4) {
  322.          while(var4-- > 0) {
  323.             if (var5[var6++] != var8[var9++]) {
  324.                return false;
  325.             }
  326.          }
  327.  
  328.          return true;
  329.       } else {
  330.          return false;
  331.       }
  332.    }
  333.  
  334.    public boolean regionMatches(boolean var1, int var2, String var3, int var4, int var5) {
  335.       char[] var6 = this.value;
  336.       int var7 = this.offset + var2;
  337.       int var10000 = this.offset + this.count;
  338.       char[] var9 = var3.value;
  339.       int var10 = var3.offset + var4;
  340.       if (var4 >= 0 && var2 >= 0 && (long)var2 <= (long)this.count - (long)var5 && (long)var4 <= (long)var3.count - (long)var5) {
  341.          while(true) {
  342.             if (var5-- <= 0) {
  343.                return true;
  344.             }
  345.  
  346.             char var11 = var6[var7++];
  347.             char var12 = var9[var10++];
  348.             if (var11 != var12) {
  349.                if (!var1) {
  350.                   break;
  351.                }
  352.  
  353.                char var13 = Character.toUpperCase(var11);
  354.                char var14 = Character.toUpperCase(var12);
  355.                if (var13 != var14 && Character.toLowerCase(var13) != Character.toLowerCase(var14)) {
  356.                   break;
  357.                }
  358.             }
  359.          }
  360.  
  361.          return false;
  362.       } else {
  363.          return false;
  364.       }
  365.    }
  366.  
  367.    public boolean startsWith(String var1, int var2) {
  368.       char[] var3 = this.value;
  369.       int var4 = this.offset + var2;
  370.       int var10000 = this.offset + this.count;
  371.       char[] var6 = var1.value;
  372.       int var7 = var1.offset;
  373.       int var8 = var1.count;
  374.       if (var2 >= 0 && var2 <= this.count - var8) {
  375.          do {
  376.             --var8;
  377.             if (var8 < 0) {
  378.                return true;
  379.             }
  380.          } while(var3[var4++] == var6[var7++]);
  381.  
  382.          return false;
  383.       } else {
  384.          return false;
  385.       }
  386.    }
  387.  
  388.    public boolean startsWith(String var1) {
  389.       return this.startsWith(var1, 0);
  390.    }
  391.  
  392.    public boolean endsWith(String var1) {
  393.       return this.startsWith(var1, this.count - var1.count);
  394.    }
  395.  
  396.    public int hashCode() {
  397.       int var1 = this.hash;
  398.       if (var1 == 0) {
  399.          int var2 = this.offset;
  400.          char[] var3 = this.value;
  401.          int var4 = this.count;
  402.  
  403.          for(int var5 = 0; var5 < var4; ++var5) {
  404.             var1 = 31 * var1 + var3[var2++];
  405.          }
  406.  
  407.          this.hash = var1;
  408.       }
  409.  
  410.       return var1;
  411.    }
  412.  
  413.    public int indexOf(int var1) {
  414.       return this.indexOf(var1, 0);
  415.    }
  416.  
  417.    public int indexOf(int var1, int var2) {
  418.       int var3 = this.offset + this.count;
  419.       char[] var4 = this.value;
  420.       if (var2 < 0) {
  421.          var2 = 0;
  422.       } else if (var2 >= this.count) {
  423.          return -1;
  424.       }
  425.  
  426.       for(int var5 = this.offset + var2; var5 < var3; ++var5) {
  427.          if (var4[var5] == var1) {
  428.             return var5 - this.offset;
  429.          }
  430.       }
  431.  
  432.       return -1;
  433.    }
  434.  
  435.    public int lastIndexOf(int var1) {
  436.       return this.lastIndexOf(var1, this.count - 1);
  437.    }
  438.  
  439.    public int lastIndexOf(int var1, int var2) {
  440.       int var3 = this.offset;
  441.       char[] var4 = this.value;
  442.  
  443.       for(int var5 = this.offset + (var2 >= this.count ? this.count - 1 : var2); var5 >= var3; --var5) {
  444.          if (var4[var5] == var1) {
  445.             return var5 - this.offset;
  446.          }
  447.       }
  448.  
  449.       return -1;
  450.    }
  451.  
  452.    public int indexOf(String var1) {
  453.       return this.indexOf(var1, 0);
  454.    }
  455.  
  456.    public int indexOf(String var1, int var2) {
  457.       char[] var3 = this.value;
  458.       char[] var4 = var1.value;
  459.       int var5 = this.offset + (this.count - var1.count);
  460.       if (var2 >= this.count) {
  461.          return this.count == 0 && var2 == 0 && var1.count == 0 ? 0 : -1;
  462.       } else {
  463.          if (var2 < 0) {
  464.             var2 = 0;
  465.          }
  466.  
  467.          if (var1.count == 0) {
  468.             return var2;
  469.          } else {
  470.             int var6 = var1.offset;
  471.             char var7 = var4[var6];
  472.             int var8 = this.offset + var2;
  473.  
  474.             while(true) {
  475.                label47:
  476.                while(var8 > var5 || var3[var8] == var7) {
  477.                   if (var8 > var5) {
  478.                      return -1;
  479.                   }
  480.  
  481.                   int var9 = var8 + 1;
  482.                   int var10 = var9 + var1.count - 1;
  483.                   int var11 = var6 + 1;
  484.  
  485.                   while(var9 < var10) {
  486.                      if (var3[var9++] != var4[var11++]) {
  487.                         ++var8;
  488.                         continue label47;
  489.                      }
  490.                   }
  491.  
  492.                   return var8 - this.offset;
  493.                }
  494.  
  495.                ++var8;
  496.             }
  497.          }
  498.       }
  499.    }
  500.  
  501.    public int lastIndexOf(String var1) {
  502.       return this.lastIndexOf(var1, this.count);
  503.    }
  504.  
  505.    public int lastIndexOf(String var1, int var2) {
  506.       int var3 = this.count - var1.count;
  507.       if (var2 < 0) {
  508.          return -1;
  509.       } else {
  510.          if (var2 > var3) {
  511.             var2 = var3;
  512.          }
  513.  
  514.          if (var1.count == 0) {
  515.             return var2;
  516.          } else {
  517.             char[] var4 = this.value;
  518.             char[] var5 = var1.value;
  519.             int var6 = var1.offset + var1.count - 1;
  520.             char var7 = var5[var6];
  521.             int var8 = this.offset + var1.count - 1;
  522.             int var9 = var8 + var2;
  523.  
  524.             while(true) {
  525.                label39:
  526.                while(var9 < var8 || var4[var9] == var7) {
  527.                   if (var9 < var8) {
  528.                      return -1;
  529.                   }
  530.  
  531.                   int var10 = var9 - 1;
  532.                   int var11 = var10 - (var1.count - 1);
  533.                   int var12 = var6 - 1;
  534.  
  535.                   while(var10 > var11) {
  536.                      if (var4[var10--] != var5[var12--]) {
  537.                         --var9;
  538.                         continue label39;
  539.                      }
  540.                   }
  541.  
  542.                   return var11 - this.offset + 1;
  543.                }
  544.  
  545.                --var9;
  546.             }
  547.          }
  548.       }
  549.    }
  550.  
  551.    public String substring(int var1) {
  552.       return this.substring(var1, this.count);
  553.    }
  554.  
  555.    public String substring(int var1, int var2) {
  556.       if (var1 < 0) {
  557.          throw new StringIndexOutOfBoundsException(var1);
  558.       } else if (var2 > this.count) {
  559.          throw new StringIndexOutOfBoundsException(var2);
  560.       } else if (var1 > var2) {
  561.          throw new StringIndexOutOfBoundsException(var2 - var1);
  562.       } else {
  563.          return var1 == 0 && var2 == this.count ? this : new String(this.offset + var1, var2 - var1, this.value);
  564.       }
  565.    }
  566.  
  567.    public String concat(String var1) {
  568.       int var2 = var1.length();
  569.       if (var2 == 0) {
  570.          return this;
  571.       } else {
  572.          char[] var3 = new char[this.count + var2];
  573.          this.getChars(0, this.count, var3, 0);
  574.          var1.getChars(0, var2, var3, this.count);
  575.          return new String(0, this.count + var2, var3);
  576.       }
  577.    }
  578.  
  579.    public String replace(char var1, char var2) {
  580.       if (var1 != var2) {
  581.          int var3 = this.count;
  582.          int var4 = -1;
  583.          char[] var5 = this.value;
  584.          int var6 = this.offset;
  585.  
  586.          do {
  587.             ++var4;
  588.          } while(var4 < var3 && var5[var6 + var4] != var1);
  589.  
  590.          if (var4 < var3) {
  591.             char[] var7 = new char[var3];
  592.  
  593.             for(int var8 = 0; var8 < var4; ++var8) {
  594.                var7[var8] = var5[var6 + var8];
  595.             }
  596.  
  597.             while(var4 < var3) {
  598.                char var9 = var5[var6 + var4];
  599.                var7[var4] = var9 == var1 ? var2 : var9;
  600.                ++var4;
  601.             }
  602.  
  603.             return new String(0, var3, var7);
  604.          }
  605.       }
  606.  
  607.       return this;
  608.    }
  609.  
  610.    public String toLowerCase(Locale var1) {
  611.       int var2 = this.count;
  612.       int var3 = this.offset;
  613.       char[] var4 = this.value;
  614.  
  615.       for(int var5 = 0; var5 < var2; ++var5) {
  616.          char var6 = this.value[var3 + var5];
  617.          if (var6 != Character.toLowerCase(var6)) {
  618.             char[] var9 = new char[this.count];
  619.             System.arraycopy(var4, var3, var9, 0, var5);
  620.             if (var1.getLanguage().equals("tr")) {
  621.                for(int var7 = var5; var7 < var2; ++var7) {
  622.                   char var8 = var4[var3 + var7];
  623.                   if (var8 == 'I') {
  624.                      var9[var7] = 305;
  625.                   } else if (var8 == 304) {
  626.                      var9[var7] = 'i';
  627.                   } else {
  628.                      var9[var7] = Character.toLowerCase(var8);
  629.                   }
  630.                }
  631.             } else {
  632.                for(int var10 = var5; var10 < var2; ++var10) {
  633.                   var9[var10] = Character.toLowerCase(var4[var3 + var10]);
  634.                }
  635.             }
  636.  
  637.             return new String(var9);
  638.          }
  639.       }
  640.  
  641.       return this;
  642.    }
  643.  
  644.    public String toLowerCase() {
  645.       return this.toLowerCase(Locale.getDefault());
  646.    }
  647.  
  648.    public String toUpperCase(Locale var1) {
  649.       int var2 = this.count;
  650.       int var3 = this.offset;
  651.       char[] var4 = this.value;
  652.  
  653.       for(int var5 = 0; var5 < var2; ++var5) {
  654.          char var6 = this.value[var3 + var5];
  655.          if (var6 != Character.toUpperCase(var6)) {
  656.             char[] var11 = new char[var2];
  657.             int var7 = 0;
  658.             System.arraycopy(var4, var3, var11, 0, var5);
  659.             if (var1.getLanguage().equals("tr")) {
  660.                for(int var8 = var5; var8 < var2; ++var8) {
  661.                   char var9 = var4[var3 + var8];
  662.                   if (var9 == 'i') {
  663.                      var11[var8 + var7] = 304;
  664.                   } else if (var9 == 305) {
  665.                      var11[var8 + var7] = 'I';
  666.                   } else if (var9 == 223) {
  667.                      char[] var10 = new char[var11.length + 1];
  668.                      System.arraycopy(var11, 0, var10, 0, var8 + 1 + var7);
  669.                      var10[var8 + var7] = 'S';
  670.                      ++var7;
  671.                      var10[var8 + var7] = 'S';
  672.                      var11 = var10;
  673.                   } else {
  674.                      var11[var8 + var7] = Character.toUpperCase(var9);
  675.                   }
  676.                }
  677.             } else {
  678.                for(int var12 = var5; var12 < var2; ++var12) {
  679.                   char var13 = var4[var3 + var12];
  680.                   if (var13 == 223) {
  681.                      char[] var14 = new char[var11.length + 1];
  682.                      System.arraycopy(var11, 0, var14, 0, var12 + 1 + var7);
  683.                      var14[var12 + var7] = 'S';
  684.                      ++var7;
  685.                      var14[var12 + var7] = 'S';
  686.                      var11 = var14;
  687.                   } else {
  688.                      var11[var12 + var7] = Character.toUpperCase(var13);
  689.                   }
  690.                }
  691.             }
  692.  
  693.             return new String(var11);
  694.          }
  695.       }
  696.  
  697.       return this;
  698.    }
  699.  
  700.    public String toUpperCase() {
  701.       return this.toUpperCase(Locale.getDefault());
  702.    }
  703.  
  704.    public String trim() {
  705.       int var1 = this.count;
  706.       int var2 = 0;
  707.       int var3 = this.offset;
  708.  
  709.       char[] var4;
  710.       for(var4 = this.value; var2 < var1 && var4[var3 + var2] <= ' '; ++var2) {
  711.       }
  712.  
  713.       while(var2 < var1 && var4[var3 + var1 - 1] <= ' ') {
  714.          --var1;
  715.       }
  716.  
  717.       return var2 <= 0 && var1 >= this.count ? this : this.substring(var2, var1);
  718.    }
  719.  
  720.    public String toString() {
  721.       return this;
  722.    }
  723.  
  724.    public char[] toCharArray() {
  725.       char[] var1 = new char[this.count];
  726.       this.getChars(0, this.count, var1, 0);
  727.       return var1;
  728.    }
  729.  
  730.    public static String valueOf(Object var0) {
  731.       return var0 == null ? "null" : var0.toString();
  732.    }
  733.  
  734.    public static String valueOf(char[] var0) {
  735.       return new String(var0);
  736.    }
  737.  
  738.    public static String valueOf(char[] var0, int var1, int var2) {
  739.       return new String(var0, var1, var2);
  740.    }
  741.  
  742.    public static String copyValueOf(char[] var0, int var1, int var2) {
  743.       return new String(var0, var1, var2);
  744.    }
  745.  
  746.    public static String copyValueOf(char[] var0) {
  747.       return copyValueOf(var0, 0, var0.length);
  748.    }
  749.  
  750.    public static String valueOf(boolean var0) {
  751.       return var0 ? "true" : "false";
  752.    }
  753.  
  754.    public static String valueOf(char var0) {
  755.       char[] var1 = new char[]{var0};
  756.       return new String(0, 1, var1);
  757.    }
  758.  
  759.    public static String valueOf(int var0) {
  760.       return Integer.toString(var0, 10);
  761.    }
  762.  
  763.    public static String valueOf(long var0) {
  764.       return Long.toString(var0, 10);
  765.    }
  766.  
  767.    public static String valueOf(float var0) {
  768.       return Float.toString(var0);
  769.    }
  770.  
  771.    public static String valueOf(double var0) {
  772.       return Double.toString(var0);
  773.    }
  774.  
  775.    public native String intern();
  776. }
  777.