モジュール java.base
パッケージ java.lang

クラスString

  • すべての実装されたインタフェース:
    Serializable, CharSequence, Comparable<String>


    public final class String
    extends Object
    implements Serializable, Comparable<String>, CharSequence
    Stringクラスは文字列を表します。 Javaプログラム内の"abc"などのリテラル文字列はすべて、このクラスのインスタンスとして実行されます。

    文字列は定数です。この値を作成したあとに変更はできません。 文字列バッファは可変文字列をサポートします。 文字列オブジェクトは不変であるため、共用することができます。 たとえば、

         String str = "abc";
     

    は、次と同じです。

         char data[] = {'a', 'b', 'c'};
         String str = new String(data);
     

    文字列がどのように使われるかについて、さらに例を示します。

         System.out.println("abc");
         String cde = "cde";
         System.out.println("abc" + cde);
         String c = "abc".substring(2,3);
         String d = cde.substring(1, 2);
     

    Stringクラスには、文字列のそれぞれの文字をテストするメソッドや、文字列の比較、文字列の検索、部分文字列の抽出、および文字をすべて大文字または小文字に変換した文字列のコピー作成などを行うメソッドがあります。 ケース・マッピングは、Characterクラスで指定されたUnicode仕様バージョンに基づいています。

    Java言語は、文字列連結演算子( + )、およびその他のオブジェクトから文字列への変換に対する特別なサポートを提供します。 文字列の連結と変換の詳細については、「Java™言語仕様」を参照してください。

    ほかで指定がない場合、null引数をコンストラクタまたはこのクラスのメソッドへ渡すと、NullPointerExceptionがスローされます。

    Stringは、補助文字サロゲート・ペアで表現するUTF-16形式の文字列を表します(詳細は、Characterクラスの「Unicode文字表現」セクションを参照)。 charコード単位を参照するインデックス値です。したがって、補助文字はStringの2つの位置を使用します。

    Stringクラスは、Unicodeコード単位(char値)を扱うメソッドのほかに、Unicodeコード・ポイント(文字)を扱うメソッドを提供します。

    特に明記されていない限り、文字列を比較するメソッドはロケールを考慮しません。 Collatorクラスは、細かい粒度のロケール依存のString比較のためのメソッドを提供します。

    実装上の注意:
    コンパイラが最終的に「Java™言語仕様」に準拠している限り、文字列連結演算子の実装はJavaコンパイラの裁量に委ねられます。 たとえば、javacコンパイラは、JDKのバージョンに応じて、StringBufferStringBuilder、またはjava.lang.invoke.StringConcatFactoryを使用して演算子を実装できます。 文字列変換の実装は、通常、Objectによって定義され、Javaのすべてのクラスによって継承されるメソッドtoStringによって行われます。
    導入されたバージョン:
    1.0
    関連項目:
    Object.toString(), StringBuffer, StringBuilder, Charset, 直列化された形式
    Java™言語仕様:
    15.18.1文字列連結演算子+
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      static Comparator<String> CASE_INSENSITIVE_ORDER
      compareToIgnoreCaseの場合と同じようにStringオブジェクトを順序付けるComparatorです。
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      String​()
      新しく生成されたStringオブジェクトを初期化して、空の文字シーケンスを表すようにします。
      String​(byte[] bytes)
      プラットフォームのデフォルトの文字セットを使用して、指定されたバイト配列を復号化することによって、新しいStringを構築します。
      String​(byte[] ascii, int hibyte)
      非推奨。 
      このメソッドでは、バイトから文字への変換が正しく行われません。 JDK 1.1以降では、これを行うには、Charset (文字セットの名前)を取る、またはプラットフォームのデフォルト文字セットを使用するStringコンストラクタの使用が推奨されます。
      String​(byte[] bytes, int offset, int length)
      プラットフォームのデフォルトの文字セットを使用して、指定されたバイト部分配列を復号化することによって、新しいStringを構築します。
      String​(byte[] ascii, int hibyte, int offset, int count)
      非推奨。 
      このメソッドでは、バイトから文字への変換が正しく行われません。 JDK 1.1以降では、これを行うには、Charset (文字セットの名前)を取る、またはプラットフォームのデフォルト文字セットを使用するStringコンストラクタの使用が推奨されます。
      String​(byte[] bytes, int offset, int length, String charsetName)
      指定された文字セットを使用して、指定されたバイト部分配列をデコードすることによって、新しいStringを構築します。
      String​(byte[] bytes, int offset, int length, Charset charset)
      指定された文字セットを使用して、指定された部分バイト配列を復号化することにより、新しいStringを構築します。
      String​(byte[] bytes, String charsetName)
      指定された文字セットを使用して、指定されたバイト配列を復号化することにより、新しいStringを構築します。
      String​(byte[] bytes, Charset charset)
      指定された文字セットを使用して、指定されたバイト配列を復号化することにより、新しいStringを構築します。
      String​(char[] value)
      新しいStringを割り当てて、これが文字配列引数に現在含まれている文字シーケンスを表すようにします。
      String​(char[] value, int offset, int count)
      文字配列引数の部分配列からなる文字を含む新しいStringを割り当てます。
      String​(int[] codePoints, int offset, int count)
      Unicodeコード・ポイント配列引数の部分配列からなる文字を含む新しいStringを割り当てます。
      String​(String original)
      新しく生成されたStringオブジェクトを初期化して、引数と同じ文字シーケンスを表すようにします。つまり、新しく作成された文字列は引数文字列のコピーになります。
      String​(StringBuffer buffer)
      文字列バッファ引数に現在含まれている文字列を持つ新しい文字列を構築します。
      String​(StringBuilder builder)
      文字列ビルダー引数に現在含まれている文字列を持つ新しい文字列を割り当てます。
    • メソッドのサマリー

      すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 非推奨のメソッド 
      修飾子と型 メソッド 説明
      char charAt​(int index)
      指定されたインデックスのchar値を返します。
      IntStream chars​()
      このシーケンスのchar値をゼロ拡張したintを含むストリームを返します。
      int codePointAt​(int index)
      指定されたインデックス位置の文字(Unicodeコード・ポイント)を返します。
      int codePointBefore​(int index)
      指定されたインデックスの前の文字(Unicodeコード・ポイント)を返します。
      int codePointCount​(int beginIndex, int endIndex)
      このStringの指定されたテキスト範囲のUnicodeコード・ポイントの数を返します。
      IntStream codePoints​()
      このシーケンスからコード・ポイント値のストリームを返します。
      int compareTo​(String anotherString)
      2つの文字列を辞書的に比較します。
      int compareToIgnoreCase​(String str)
      大文字と小文字の区別なしで、2つの文字列を辞書的に比較します。
      String concat​(String str)
      指定された文字列をこの文字列の最後に連結します。
      boolean contains​(CharSequence s)
      この文字列が指定されたchar値のシーケンスを含む場合に限りtrueを返します。
      boolean contentEquals​(CharSequence cs)
      この文字列と指定されたCharSequenceを比較します。
      boolean contentEquals​(StringBuffer sb)
      この文字列と指定されたStringBufferを比較します。
      static String copyValueOf​(char[] data)
      valueOf(char[])と同等です。
      static String copyValueOf​(char[] data, int offset, int count)
      valueOf(char[], int, int)と同等です。
      boolean endsWith​(String suffix)
      この文字列が、指定された接尾辞で終るかどうかを判定します。
      boolean equals​(Object anObject)
      この文字列と指定されたオブジェクトを比較します。
      boolean equalsIgnoreCase​(String anotherString)
      大文字と小文字を区別せずに、このStringを別のStringと比較します。
      static String format​(String format, Object... args)
      指定された書式の文字列と引数を使って、書式付き文字列を返します。
      static String format​(Locale l, String format, Object... args)
      指定されたロケール、書式文字列、および引数を使って、フォーマットされた文字列を返します。
      byte[] getBytes​()
      プラットフォームのデフォルトの文字セットを使用してこのStringをバイト・シーケンスにエンコード化し、結果を新規バイト配列に格納します。
      void getBytes​(int srcBegin, int srcEnd, byte[] dst, int dstBegin)
      非推奨。 
      このメソッドでは、文字からバイトへの変換が正しく行われません。 JDK 1.1では、文字からバイトへの変換には、プラットフォームのデフォルト文字セットを使用するgetBytes()メソッドの使用が推奨されます。
      byte[] getBytes​(String charsetName)
      指定された文字セットを使用してこのStringをバイト・シーケンスにエンコードし、結果を新規バイト配列に格納します。
      byte[] getBytes​(Charset charset)
      指定された文字セットを使用してこのStringをバイト・シーケンスにエンコード化し、結果を新規バイト配列に格納します。
      void getChars​(int srcBegin, int srcEnd, char[] dst, int dstBegin)
      この文字列から、コピー先の文字配列に文字をコピーします。
      int hashCode​()
      この文字列のハッシュ・コードを返します。
      int indexOf​(int ch)
      この文字列内で、指定された文字が最初に出現する位置のインデックスを返します。
      int indexOf​(int ch, int fromIndex)
      この文字列内で、指定されたインデックスから検索を開始し、指定された文字が最初に出現する位置のインデックスを返します。
      int indexOf​(String str)
      この文字列内で、指定された部分文字列が最初に出現する位置のインデックスを返します。
      int indexOf​(String str, int fromIndex)
      指定されたインデックス以降で、指定された部分文字列がこの文字列内で最初に出現する位置のインデックスを返します。
      String intern​()
      文字列オブジェクトの正準表現を返します。
      boolean isEmpty​()
      length()0の場合にのみ、trueを返します。
      static String join​(CharSequence delimiter, CharSequence... elements)
      指定されたdelimiterのコピーを使用して結合されたCharSequence要素のコピーからなる新しいStringを返します。
      static String join​(CharSequence delimiter, Iterable<? extends CharSequence> elements)
      指定されたdelimiterのコピーを使用して結合されたCharSequence要素のコピーからなる新しいStringを返します。
      int lastIndexOf​(int ch)
      この文字列内で、指定された文字が最後に出現する位置のインデックスを返します。
      int lastIndexOf​(int ch, int fromIndex)
      この文字列内で、指定された文字が最後に出現する位置のインデックスを返します(検索は指定されたインデックスから開始され、先頭方向に行われる)。
      int lastIndexOf​(String str)
      この文字列内で、指定された部分文字列が最後に出現する位置のインデックスを返します。
      int lastIndexOf​(String str, int fromIndex)
      この文字列内で、指定された部分文字列が最後に出現する位置のインデックスを返します(検索は指定されたインデックスから開始され、先頭方向に行われる)。
      int length​()
      この文字列の長さを返します。
      boolean matches​(String regex)
      この文字列が、指定された正規表現と一致するかどうかを判定します。
      int offsetByCodePoints​(int index, int codePointOffset)
      このString内で、指定されたindexからcodePointOffsetコード・ポイント分だけオフセットされた位置のインデックスを返します。
      boolean regionMatches​(boolean ignoreCase, int toffset, String other, int ooffset, int len)
      2つの文字列領域が等しいかどうかを判定します。
      boolean regionMatches​(int toffset, String other, int ooffset, int len)
      2つの文字列領域が等しいかどうかを判定します。
      String replace​(char oldChar, char newChar)
      この文字列内にあるすべてのoldCharnewCharに置換した結果生成される文字列を返します。
      String replace​(CharSequence target, CharSequence replacement)
      リテラル・ターゲット・シーケンスに一致するこの文字列の部分文字列を、指定されたリテラル置換シーケンスに置き換えます。
      String replaceAll​(String regex, String replacement)
      指定された正規表現に一致する、この文字列の各部分文字列に対し、指定された置換を実行します。
      String replaceFirst​(String regex, String replacement)
      指定された正規表現に一致する、この文字列の最初の部分文字列に対し、指定された置換を実行します。
      String[] split​(String regex)
      この文字列を、指定された正規表現に一致する位置で分割します。
      String[] split​(String regex, int limit)
      この文字列を、指定された正規表現に一致する位置で分割します。
      boolean startsWith​(String prefix)
      この文字列が、指定された接頭辞で始まるかどうかを判定します。
      boolean startsWith​(String prefix, int toffset)
      この文字列の指定されたインデックス以降の部分文字列が、指定された接頭辞で始まるかどうかを判定します。
      CharSequence subSequence​(int beginIndex, int endIndex)
      このシーケンスのサブシーケンスである文字シーケンスを返します。
      String substring​(int beginIndex)
      この文字列の部分文字列である文字列を返します。
      String substring​(int beginIndex, int endIndex)
      この文字列の部分文字列である文字列を返します。
      char[] toCharArray​()
      この文字列を新しい文字配列に変換します。
      String toLowerCase​()
      デフォルト・ロケールのルールを使って、このString内のすべての文字を小文字に変換します。
      String toLowerCase​(Locale locale)
      指定されたLocaleのルールを使って、このString内のすべての文字を小文字に変換します。
      String toString​()
      このオブジェクト(これはすでに文字列です!)
      String toUpperCase​()
      デフォルト・ロケールのルールを使って、このString内のすべての文字を大文字に変換します。
      String toUpperCase​(Locale locale)
      指定されたLocaleのルールを使って、このString内のすべての文字を大文字に変換します。
      String trim​()
      値がこの文字列である文字列を返します(先頭と末尾の空白は削除される)。
      static String valueOf​(boolean b)
      boolean引数の文字列表現を返します。
      static String valueOf​(char c)
      char引数の文字列表現を返します。
      static String valueOf​(char[] data)
      char配列引数の文字列表現を返します。
      static String valueOf​(char[] data, int offset, int count)
      char配列引数の特定の部分配列の文字列表現を返します。
      static String valueOf​(double d)
      double引数の文字列表現を返します。
      static String valueOf​(float f)
      float引数の文字列表現を返します。
      static String valueOf​(int i)
      int引数の文字列表現を返します。
      static String valueOf​(long l)
      long引数の文字列表現を返します。
      static String valueOf​(Object obj)
      Object引数の文字列表現を返します。
    • フィールドの詳細

      • CASE_INSENSITIVE_ORDER

        public static final Comparator<String> CASE_INSENSITIVE_ORDER
        compareToIgnoreCaseの場合と同じようにStringオブジェクトを順序付けるComparatorです。 このコンパレータは直列化可能です。

        このComparatorはロケールを考慮しないので、一部のロケールでは、正しい順序に並べられないことがあります。 Collatorクラスはロケールに依存した比較を提供します。

        導入されたバージョン:
        1.2
        関連項目:
        Collator
    • コンストラクタの詳細

      • String

        public String​()
        新しく生成されたStringオブジェクトを初期化して、空の文字シーケンスを表すようにします。 Stringは不変なので、このコンストラクタを使う必要はありません。
      • String

        public String​(String original)
        新しく生成されたStringオブジェクトを初期化して、引数と同じ文字シーケンスを表すようにします。つまり、新しく作成された文字列は引数文字列のコピーになります。 Stringは不変なので、originalの明示的なコピーが必要でないかぎり、このコンストラクタを使う必要はありません。
        パラメータ:
        original -A String
      • String

        public String​(char[] value)
        新しいStringを割り当てて、これが文字配列引数に現在含まれている文字シーケンスを表すようにします。 文字配列の内容がコピーされます。コピー後にその文字が変更されても、新しく作成された文字列には影響しません。
        パラメータ:
        value - 文字列の初期値
      • String

        public String​(char[] value,
                      int offset,
                      int count)
        文字配列引数の部分配列からなる文字を含む新しいStringを割り当てます。 引数offsetは部分配列の先頭の文字のインデックスであり、引数countは部分配列の長さを指定します。 部分配列の内容がコピーされます。コピー後に文字配列が変更されても、新しく作成された文字列には影響しません。
        パラメータ:
        value - 文字列のソースである配列
        offset - 初期オフセット
        count - 長さ
        例外:
        IndexOutOfBoundsException - offsetが負の場合、countは負であるか、またはoffsetvalue.length - countより大きい
      • String

        public String​(int[] codePoints,
                      int offset,
                      int count)
        Unicodeコード・ポイント配列引数の部分配列からなる文字を含む新しいStringを割り当てます。 引数offsetは部分配列の先頭のコード・ポイントのインデックスであり、引数countは部分配列の長さを指定します。 部分配列の内容がcharに変換されます。変換後にint配列が変更されても、新しく作成された文字列には影響しません。
        パラメータ:
        codePoints - Unicodeコード・ポイントのソースである配列
        offset - 初期オフセット
        count - 長さ
        例外:
        IllegalArgumentException - codePointsで無効なUnicodeコード・ポイントが見つかった場合
        IndexOutOfBoundsException - offsetが負の場合、countは負であるか、またはoffsetcodePoints.length - countより大きい
        導入されたバージョン:
        1.5
      • String

        public String​(byte[] bytes,
                      int offset,
                      int length,
                      String charsetName)
               throws UnsupportedEncodingException
        指定された文字セットを使用して、指定されたバイト部分配列をデコードすることによって、新しいStringを構築します。 新しいStringの長さは文字セットによって変化するため、部分配列長と一致しないことがあります。

        指定された文字セットで指定されたバイトが無効な場合、このコンストラクタの動作は指定されません。 デコード処理をより強力に制御する必要がある場合、CharsetDecoderクラスを使用する必要があります。

        パラメータ:
        bytes - 文字列に復号化されるバイト
        offset - 復号化される先頭バイトのインデックス
        length - 復号化するバイト数
        charsetName - サポートされているcharsetの名前
        例外:
        UnsupportedEncodingException - 指定された文字セットがサポートされていない場合
        IndexOutOfBoundsException - offsetが負の場合、lengthは負であるか、またはoffsetbytes.length - lengthより大きい
        導入されたバージョン:
        1.1
      • String

        public String​(byte[] bytes,
                      int offset,
                      int length,
                      Charset charset)
        指定された文字セットを使用して、指定された部分バイト配列を復号化することにより、新しいStringを構築します。 新しいStringの長さは文字セットによって変化するため、部分配列長と一致しないことがあります。

        このメソッドは、不正入力シーケンスやマップ不可文字シーケンスを、この文字セットのデフォルトの置換文字列で置き換えます。 デコード処理をより強力に制御する必要がある場合、CharsetDecoderクラスを使用する必要があります。

        パラメータ:
        bytes - 文字列に復号化されるバイト
        offset - 復号化される先頭バイトのインデックス
        length - 復号化するバイト数
        charset - bytesの復号化に使用される文字セット
        例外:
        IndexOutOfBoundsException - offsetが負の場合、lengthは負であるか、またはoffsetbytes.length - lengthより大きい
        導入されたバージョン:
        1.6
      • String

        public String​(byte[] bytes,
                      String charsetName)
               throws UnsupportedEncodingException
        指定された文字セットを使用して、指定されたバイト配列を復号化することにより、新しいStringを構築します。 新しいStringの長さは文字セットによって変化するため、バイト配列長と一致しないことがあります。

        指定された文字セットで指定されたバイトが無効な場合、このコンストラクタの動作は指定されません。 デコード処理をより強力に制御する必要がある場合、CharsetDecoderクラスを使用する必要があります。

        パラメータ:
        bytes - 文字列に復号化されるバイト
        charsetName - サポートされているcharsetの名前
        例外:
        UnsupportedEncodingException - 指定された文字セットがサポートされていない場合
        導入されたバージョン:
        1.1
      • String

        public String​(byte[] bytes,
                      Charset charset)
        指定された文字セットを使用して、指定されたバイト配列を復号化することにより、新しいStringを構築します。 新しいStringの長さは文字セットによって変化するため、バイト配列長と一致しないことがあります。

        このメソッドは、不正入力シーケンスやマップ不可文字シーケンスを、この文字セットのデフォルトの置換文字列で置き換えます。 デコード処理をより強力に制御する必要がある場合、CharsetDecoderクラスを使用する必要があります。

        パラメータ:
        bytes - 文字列に復号化されるバイト
        charset - bytesの復号化に使用される文字セット
        導入されたバージョン:
        1.6
      • String

        public String​(byte[] bytes,
                      int offset,
                      int length)
        プラットフォームのデフォルトの文字セットを使用して、指定されたバイト部分配列を復号化することによって、新しいStringを構築します。 新しいStringの長さは文字セットによって変化するため、部分配列長と一致しないことがあります。

        指定されたバイトがデフォルトの文字セットで無効な場合、このコンストラクタの動作は指定されません。 デコード処理をより強力に制御する必要がある場合、CharsetDecoderクラスを使用する必要があります。

        パラメータ:
        bytes - 文字列に復号化されるバイト
        offset - 復号化される先頭バイトのインデックス
        length - 復号化するバイト数
        例外:
        IndexOutOfBoundsException - offsetが負の場合、lengthは負であるか、またはoffsetbytes.length - lengthより大きい
        導入されたバージョン:
        1.1
      • String

        public String​(byte[] bytes)
        プラットフォームのデフォルトの文字セットを使用して、指定されたバイト配列を復号化することによって、新しいStringを構築します。 新しい Stringの長さは文字セットによって変化するため、バイト配列長と一致しないことがあります。

        指定されたバイトがデフォルトの文字セットで無効な場合、このコンストラクタの動作は指定されません。 デコード処理をより強力に制御する必要がある場合、CharsetDecoderクラスを使用する必要があります。

        パラメータ:
        bytes - 文字列に復号化されるバイト
        導入されたバージョン:
        1.1
      • String

        public String​(StringBuffer buffer)
        文字列バッファ引数に現在含まれている文字列を持つ新しい文字列を構築します。 文字列バッファの内容がコピーされます。コピー後に文字列バッファが変更されても、新しく作成された文字列には影響しません。
        パラメータ:
        buffer -A StringBuffer
      • String

        public String​(StringBuilder builder)
        文字列ビルダー引数に現在含まれている文字列を持つ新しい文字列を割り当てます。 文字列ビルダーの内容がコピーされます。コピー後に文字列ビルダーが変更されても、新しく作成された文字列には影響しません。

        このコンストラクタの提供目的は、 StringBuilderに移行しやすくすることです。 toStringメソッドを使って文字列ビルダーから文字列を取得することは、処理が高速になるので一般的に推奨されています。

        パラメータ:
        builder -AStringBuilder
        導入されたバージョン:
        1.5
    • メソッドの詳細

      • length

        public int length​()
        この文字列の長さを返します。 長さは文字列内のUnicodeコード単位の数に等しくなります。
        定義:
        length、インタフェース: CharSequence
        戻り値:
        このオブジェクトによって表される文字シーケンスの長さ。
      • isEmpty

        public boolean isEmpty​()
        length()0の場合にのみ、trueを返します。
        戻り値:
        length()0の場合はtrue、それ以外の場合はfalse
        導入されたバージョン:
        1.6
      • charAt

        public char charAt​(int index)
        指定されたインデックスのchar値を返します。 インデックスの範囲は0からlength() - 1までです。 配列のインデックス付けの場合と同じように、シーケンスの最初のcharのインデックスは0、次の文字のインデックスは1と続きます。

        インデックスで指定されたchar値がサロゲートの場合、サロゲート値が返されます。

        定義:
        charAt、インタフェース: CharSequence
        パラメータ:
        index - char値のインデックス。
        戻り値:
        文字列内の指定されたインデックス位置にあるchar値。 最初のchar値のインデックスが0になる。
        例外:
        IndexOutOfBoundsException - index引数が負の値、または文字列の長さと同じかこれより大きい値の場合。
      • codePointAt

        public int codePointAt​(int index)
        指定されたインデックス位置の文字(Unicodeコード・ポイント)を返します。 インデックスは、char値(Unicodeコード単位)を指し、0からlength() - 1までの範囲である。

        指定されたインデックス位置の指定されたchar値が上位サロゲート範囲に含まれており、それに続くインデックスがStringの長さ未満であり、かつそのインデックス位置のchar値が下位サロゲート範囲に含まれている場合、このサロゲート・ペアに対応する補助コード・ポイントが返されます。 それ以外の場合は、指定されたインデックスにあるchar値が返されます。

        パラメータ:
        index - char値へのインデックス
        戻り値:
        指定されたindexにある文字のコード・ポイント値
        例外:
        IndexOutOfBoundsException - index引数が負の値、または文字列の長さと同じかこれより大きい値の場合。
        導入されたバージョン:
        1.5
      • codePointBefore

        public int codePointBefore​(int index)
        指定されたインデックスの前の文字(Unicodeコード・ポイント)を返します。 インデックスはchar値(Unicodeコード単位)を参照し、その範囲は1 - lengthになります。

        (index - 1)char値が下位サロゲート範囲に含まれており、(index - 2)が負でなく、かつ(index - 2)char値が上位サロゲートに含まれている場合、そのサロゲート・ペアの補助コード・ポイント値が返されます。 index - 1char値が、ペアになっていない下位サロゲートであるか、または上位サロゲートである場合、そのサロゲート値が返されます。

        パラメータ:
        index - 返すべきコード・ポイントの直後のインデックス
        戻り値:
        指定されたインデックスの前にあるUnicodeコード・ポイント値。
        例外:
        IndexOutOfBoundsException - index引数が1未満であるか、またはこの文字列の長さより大きい値の場合。
        導入されたバージョン:
        1.5
      • codePointCount

        public int codePointCount​(int beginIndex,
                                  int endIndex)
        このStringの指定されたテキスト範囲のUnicodeコード・ポイントの数を返します。 テキスト範囲は、指定されたbeginIndexからインデックスendIndex - 1の位置のcharまでです。 したがって、テキスト範囲の長さ(char数)は、endIndex-beginIndexになります。 テキスト範囲内でペアになっていないサロゲートは、それぞれ1つのコード・ポイントとして数えられます。
        パラメータ:
        beginIndex - テキスト範囲内の最初のcharへのインデックス。
        endIndex - テキスト範囲内の最後のcharの直後のインデックス。
        戻り値:
        指定されたテキスト範囲内のUnicodeコード・ポイントの数
        例外:
        IndexOutOfBoundsException - beginIndexが負であるか、endIndexがこのStringの長さより大きいか、あるいはbeginIndexendIndexより大きい場合。
        導入されたバージョン:
        1.5
      • offsetByCodePoints

        public int offsetByCodePoints​(int index,
                                      int codePointOffset)
        このString内で、指定されたindexからcodePointOffsetコード・ポイント分だけオフセットされた位置のインデックスを返します。 indexcodePointOffsetで指定されるテキスト範囲内でペアになっていないサロゲートは、それぞれ1つのコード・ポイントとして数えられます。
        パラメータ:
        index - オフセットされるインデックス
        codePointOffset - オフセット(コード・ポイント数)
        戻り値:
        このString内でのインデックス
        例外:
        IndexOutOfBoundsException - indexが負の値、またはこのStringの長さよりも大きい場合、codePointOffsetが正の値でありindexから始まる部分文字列の持つコード・ポイント数がcodePointOffsetコード・ポイント数よりも少ない場合、またはcodePointOffsetが負の値でindexの前の部分文字列の持つ値がcodePointOffsetコード・ポイントの絶対値よりも小さい場合。
        導入されたバージョン:
        1.5
      • getChars

        public void getChars​(int srcBegin,
                             int srcEnd,
                             char[] dst,
                             int dstBegin)
        この文字列から、コピー先の文字配列に文字をコピーします。

        コピーされる最初の文字のインデックスはsrcBegin、コピーされる最後の文字のインデックスはsrcEnd-1です。したがって、コピーされる文字数はsrcEnd-srcBeginとなります。 文字はdstの部分配列にコピーされます。始点のインデックスはdstBeginで、終点のインデックスは次のようになります。

             dstBegin + (srcEnd-srcBegin) - 1
         
        パラメータ:
        srcBegin - コピー対象文字列内の最初の文字のインデックス。
        srcEnd - コピー対象文字列内の最後の文字のあとのインデックス。
        dst - 転送先配列。
        dstBegin - コピー先の配列内での開始座標。
        例外:
        IndexOutOfBoundsException - 次のどれかに当てはまる場合。
        • srcBeginが負である。
        • srcBeginが次より大きい: srcEnd
        • srcEndがこの文字列の長さより大きい
        • dstBeginが負である
        • dstBegin+(srcEnd-srcBegin)が次より大きい: dst.length
      • getBytes

        @Deprecated(since="1.1")
        public void getBytes​(int srcBegin,
                             int srcEnd,
                             byte[] dst,
                             int dstBegin)
        非推奨。 このメソッドでは、文字からバイトへの変換が正しく行われません。 JDK 1.1では、文字からバイトへの変換には、プラットフォームのデフォルト文字セットを使用するgetBytes()メソッドの使用が推奨されます。
        この文字列から、転送先のバイト配列に文字をコピーします。 各バイトは対応する文字の下位8ビットを受け取ります。 各文字の上位8ビットはコピーされず、転送されることはありません。

        コピーする最初の文字はインデックスsrcBegin、コピーする最後の文字はインデックスsrcEnd-1になります。 コピーする文字の合計数はsrcEnd-srcBeginです。 文字をバイトに変換したものが dstの部分配列にコピーされますが、その部分配列の始点のインデックスはdstBeginで、終点のインデックスは次のようになります。

             dstBegin + (srcEnd-srcBegin) - 1
         
        パラメータ:
        srcBegin - コピー対象文字列内の最初の文字のインデックス
        srcEnd - コピー対象文字列内の最後の文字のあとのインデックス
        dst - コピー先配列
        dstBegin - コピー先の配列内での開始オフセット
        例外:
        IndexOutOfBoundsException - 次のどれかに当てはまる場合。
        • srcBeginが負である
        • srcBeginが次より大きい: srcEnd
        • srcEndがこの文字列の長さより大きい
        • dstBeginが負である
        • dstBegin+(srcEnd-srcBegin)が次より大きい: dst.length
      • getBytes

        public byte[] getBytes​(String charsetName)
                        throws UnsupportedEncodingException
        指定された文字セットを使用してこのStringをバイト・シーケンスにエンコードし、結果を新規バイト配列に格納します。

        指定された文字セットでこの文字列をエンコードできない場合、このメソッドの動作は指定されません。 エンコード処理をより強力に制御する必要がある場合は、CharsetEncoderクラスを使用してください。

        パラメータ:
        charsetName - サポートされているcharsetの名前
        戻り値:
        結果のバイト配列
        例外:
        UnsupportedEncodingException - 指定された文字セットがサポートされていない場合
        導入されたバージョン:
        1.1
      • getBytes

        public byte[] getBytes​(Charset charset)
        指定された文字セットを使用してこのStringをバイト・シーケンスにエンコード化し、結果を新規バイト配列に格納します。

        このメソッドは、不正入力シーケンスやマップ不可文字シーケンスを、この文字セットのデフォルトの置換バイト配列で置き換えます。 エンコード処理をより強力に制御する必要がある場合は、CharsetEncoderクラスを使用してください。

        パラメータ:
        charset - Stringのエンコード化に使用されるCharset
        戻り値:
        結果のバイト配列
        導入されたバージョン:
        1.6
      • getBytes

        public byte[] getBytes​()
        プラットフォームのデフォルトの文字セットを使用してこのStringをバイト・シーケンスにエンコード化し、結果を新規バイト配列に格納します。

        デフォルトの文字セットでこの文字列をエンコード化できない場合、このメソッドの動作は指定されません。 エンコード処理をより強力に制御する必要がある場合は、CharsetEncoderクラスを使用してください。

        戻り値:
        結果のバイト配列
        導入されたバージョン:
        1.1
      • equals

        public boolean equals​(Object anObject)
        この文字列と指定されたオブジェクトを比較します。 引数がnullではなく、このオブジェクトと同じ文字シーケンスを表す Stringオブジェクトである場合にだけ、結果は trueになります。

        細かい文字列の比較については、Collatorを参照してください。

        オーバーライド:
        equals、クラス: Object
        パラメータ:
        anObject - このStringと比較するオブジェクト
        戻り値:
        指定されたオブジェクトがこの文字列に等しいStringを表す場合はtrue、それ以外の場合はfalse
        関連項目:
        compareTo(String), equalsIgnoreCase(String)
      • contentEquals

        public boolean contentEquals​(StringBuffer sb)
        この文字列と指定されたStringBufferを比較します。 結果がtrueになるのは、このStringが指定されたStringBufferと同じ文字シーケンスを表す場合だけです。 このメソッドは、StringBufferとの同期をとります。

        細かい文字列の比較については、Collatorを参照してください。

        パラメータ:
        sb - このStringと比較するStringBuffer
        戻り値:
        このStringが、指定されたStringBufferと同じ文字シーケンスを表す場合はtrue。そうでない場合はfalse
        導入されたバージョン:
        1.4
      • contentEquals

        public boolean contentEquals​(CharSequence cs)
        この文字列と指定されたCharSequenceを比較します。 このStringが、指定されたシーケンスと同じ文字値シーケンスを表す場合にだけ、結果がtrueになります。 CharSequenceStringBufferである場合、このメソッドはそれとの同期をとるので注意してください。

        細かい文字列の比較については、Collatorを参照してください。

        パラメータ:
        cs - このStringと比較されるシーケンス
        戻り値:
        このStringが、指定されたシーケンスと同じ文字値シーケンスを表す場合はtrue。そうでない場合は false
        導入されたバージョン:
        1.5
      • equalsIgnoreCase

        public boolean equalsIgnoreCase​(String anotherString)
        大文字と小文字を区別せずに、このStringを別のStringと比較します。 長さが同じで、2つの文字列内の対応する文字が大文字と小文字の区別なしで等しい場合、2つの文字列は大文字と小文字の区別なしで等しいと見なされます。

        次のどれかに該当する場合に、c1c2という2つの文字は大文字小文字の区別なしで等しいと見なされます。

        • 2つの文字が等しい(==演算子による比較)
        • 各文字に対してCharacter.toLowerCase(Character.toUpperCase(char))を呼び出すと同じ結果が得られます

        このメソッドはロケールを考慮せず、特定のロケールでは結果が不満足になることに注意してください。 Collatorクラスはロケールに依存した比較を提供します。

        パラメータ:
        anotherString - このStringと比較するString
        戻り値:
        引数がnullでなく、同等のString (大文字と小文字の区別なし)を表す場合はtrue、それ以外の場合は false
        関連項目:
        equals(Object)
      • compareTo

        public int compareTo​(String anotherString)
        2つの文字列を辞書的に比較します。 比較は文字列内のそれぞれの文字のUnicode値に基づいて行われます。 このStringオブジェクトによって表される文字シーケンスが、引数文字列によって表される文字シーケンスと辞書的に比較されます。 このStringオブジェクトが辞書的に引数文字列より前にある場合は、結果は負の整数になります。 このStringオブジェクトが辞書的に引数文字列の後ろにある場合、結果は正の整数になります。 それらの文字列が等しい場合、結果はゼロになります。compareToから0が返されるのは、equals(Object)メソッドからtrueが返される場合だけです。

        辞書的の順序の定義を示します。 2つの文字列が異なる場合、両方の文字列に対して有効なインデックスに位置する文字が異なるか、2つの文字列の長さが異なるか、あるいはその両方が該当します。 1つ以上のインデックス位置に異なる文字がある場合、kをそのようなインデックスの最小値にします。<演算子を使用して決定された、位置kの文字が小さい値の文字列は、他の文字列の辞書的に先行します。 この場合、compareToは2つの文字列で位置kにある2つの文字の値の差を返します。これは次の式で表される値になります。

         this.charAt(k)-anotherString.charAt(k)
         
        有効なすべてのインデックス位置における文字が同じ場合は、短い方の文字列が辞書的に前になります。 この場合は、compareToは文字列の長さの差を返します。これは次の式で表される値になります。
         this.length()-anotherString.length()
         

        細かい文字列の比較については、Collatorを参照してください。

        定義:
        compareTo、インタフェース: Comparable<String>
        パラメータ:
        anotherString - 比較対象のString
        戻り値:
        引数文字列がこの文字列に等しい場合は、値0。この文字列が文字列引数より辞書式に小さい場合は、0より小さい値。この文字列が文字列引数より辞書式に大きい場合は、0より大きい値。
      • compareToIgnoreCase

        public int compareToIgnoreCase​(String str)
        大文字と小文字の区別なしで、2つの文字列を辞書的に比較します。 このメソッドは、文字列の正規化バージョンでcompareToを呼び出して得られた符号を持つ整数を返します。ここでは、各文字でCharacter.toLowerCase(Character.toUpperCase(character))を呼び出すことで大文字と小文字の違いがなくなります。

        このメソッドはロケールを考慮しないので、一部のロケールでは、正しい順序に並べられないことがあります。 Collatorクラスはロケールに依存した比較を提供します。

        パラメータ:
        str - 比較対象のString
        戻り値:
        大文字と小文字の区別なしで、指定されたStringがこのStringより大きい場合は負の整数、同じ場合は0、小さい場合は正の整数。
        導入されたバージョン:
        1.2
        関連項目:
        Collator
      • regionMatches

        public boolean regionMatches​(int toffset,
                                     String other,
                                     int ooffset,
                                     int len)
        2つの文字列領域が等しいかどうかを判定します。

        このStringオブジェクトの部分文字列が、引数otherの部分文字列と比較されます。 これらの部分文字列が同じ文字シーケンスを表す場合、結果はtrueになります。 比較の対象となるStringオブジェクトの部分文字列は、インデックスtoffsetから始まり、長さはlenです。 比較の対象となるotherの部分文字列はインデックスooffsetから始まり、長さはlenです。 次のどれかに該当する場合にだけ、結果はfalseになります。

        • toffsetが負の場合。
        • ooffsetが負の場合。
        • toffset+lenがこのStringオブジェクトの長さより大きい。
        • ooffset+lenが引数otherの長さより大きい。
        • lenより小さく、負でない、次のような整数kがある: this.charAt(toffset + k) != other.charAt(ooffset + k)

        このメソッドはロケールを考慮しないことに注意してください。 Collatorクラスはロケールに依存した比較を提供します。

        パラメータ:
        toffset - この文字列内の部分領域の開始オフセット。
        other - 文字列引数。
        ooffset - 文字列引数内の部分領域の開始オフセット。
        len - 比較対象の文字数。
        戻り値:
        この文字列の指定された部分領域が文字列引数の指定された部分領域と完全に一致する場合はtrue、そうでない場合はfalse
      • regionMatches

        public boolean regionMatches​(boolean ignoreCase,
                                     int toffset,
                                     String other,
                                     int ooffset,
                                     int len)
        2つの文字列領域が等しいかどうかを判定します。

        このStringオブジェクトの部分文字列が、引数otherの部分文字列と比較されます。 これらの部分文字列が同じ文字シーケンスを表す場合、結果はtrueになります。ignoreCaseがtrueの場合にのみ、大文字と小文字が区別されません。 比較の対象となるStringオブジェクトの部分文字列は、インデックスtoffsetから始まり、長さはlenです。 比較の対象となるotherの部分文字列はインデックスooffsetから始まり、長さはlenです。 次のどれかに該当する場合にだけ、結果はfalseになります。

        • toffsetが負の場合。
        • ooffsetが負の場合。
        • toffset+lenがこのStringオブジェクトの長さより大きい。
        • ooffset+lenが引数otherの長さより大きい。
        • ignoreCasefalseであり、lenより小さく、負でない、次のような整数kがある:
           this.charAt(toffset+k) != other.charAt(ooffset+k)
           
        • ignoreCasetrueであり、lenより小さく、負でない、次のような整数kがある:
           Character.toLowerCase(Character.toUpperCase(this.charAt(toffset+k))) !=
               Character.toLowerCase(Character.toUpperCase(other.charAt(ooffset+k)))
           

        このメソッドはロケールを考慮しないため、ignoreCasetrueの場合、特定のロケールでは不満足な結果になります。 Collatorクラスはロケールに依存した比較を提供します。

        パラメータ:
        ignoreCase - trueの場合、文字の比較の際に大文字小文字は区別されない。
        toffset - この文字列内の部分領域の開始オフセット。
        other - 文字列引数。
        ooffset - 文字列引数内の部分領域の開始オフセット。
        len - 比較対象の文字数。
        戻り値:
        この文字列の指定された部分領域が文字列引数の指定された部分領域と一致する場合はtrue、そうでない場合はfalse 一致した場合に、大文字と小文字が区別されているかどうかは引数ignoreCaseによって決まる。
      • startsWith

        public boolean startsWith​(String prefix,
                                  int toffset)
        この文字列の指定されたインデックス以降の部分文字列が、指定された接頭辞で始まるかどうかを判定します。
        パラメータ:
        prefix - 接頭辞。
        toffset - この文字列の比較を開始する位置。
        戻り値:
        引数によって表される文字シーケンスが、インデックスtoffsetで始まるこのオブジェクトの部分文字列の接頭辞である場合はtrue、そうでない場合はfalse toffsetが負の値の場合、あるいはStringオブジェクトの長さより大きい場合、結果はfalse。そうでない場合は、結果は次の式の結果と同じ
                  this.substring(toffset).startsWith(prefix)
                  
      • startsWith

        public boolean startsWith​(String prefix)
        この文字列が、指定された接頭辞で始まるかどうかを判定します。
        パラメータ:
        prefix - 接頭辞。
        戻り値:
        引数によって表される文字シーケンスが、この文字列によって表される文字シーケンスの接頭辞である場合はtrue、そうでない場合はfalse 引数が空の文字列の場合や、equals(Object)メソッドによる判定においてこのStringオブジェクトに等しい場合にもtrueが返される。
        導入されたバージョン:
        1.0
      • endsWith

        public boolean endsWith​(String suffix)
        この文字列が、指定された接尾辞で終るかどうかを判定します。
        パラメータ:
        suffix - 接尾辞。
        戻り値:
        引数によって表される文字シーケンスが、このオブジェクトによって表される文字シーケンスの接尾辞である場合はtrue、そうでない場合はfalse 引数が空の文字列の場合や、equals(Object)メソッドによる判定においてこのStringオブジェクトに等しい場合の結果はtrueになる。
      • hashCode

        public int hashCode​()
        この文字列のハッシュ・コードを返します。 Stringのハッシュ・コードは、次の方法で計算します。
         s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
         
        int算術が使用されますが、ここで、s[i]は文字列のi番目の文字であり、nは文字列の長さであり、^は累乗を示します。 空の文字列のハッシュ値は0です。
        オーバーライド:
        hashCode、クラス: Object
        戻り値:
        このオブジェクトのハッシュ・コード値。
        関連項目:
        Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
      • indexOf

        public int indexOf​(int ch)
        この文字列内で、指定された文字が最初に出現する位置のインデックスを返します。 chを持つ文字がこのStringオブジェクトによって表される文字シーケンス内にある場合、最初に出現する位置のインデックス(Unicodeコード単位)が返されます。 chの値が0から0xFFFFの範囲にある場合、次の式がtrueとなるような最小値kが返されます。
         this.charAt(k) == ch
         
        がtrueである。 chがほかの値の場合、次の式がtrueとなるような最小値kです。
         this.codePointAt(k) == ch
         
        がtrueである。 該当する文字がこの文字列内にない場合は、-1が返されます。
        パラメータ:
        ch - 文字(Unicodeコード・ポイント)。
        戻り値:
        このオブジェクトによって表される文字シーケンス内で、指定された文字が最初に出現する位置のインデックス。文字がない場合は-1
      • indexOf

        public int indexOf​(int ch,
                           int fromIndex)
        この文字列内で、指定されたインデックスから検索を開始し、指定された文字が最初に出現する位置のインデックスを返します。

        chを持つ文字が、このStringオブジェクトによって表される文字シーケンスのfromIndexより大きいか同じインデックス位置にある場合、該当する最初のインデックスが返されます。 chの値が0から0xFFFFの範囲にある場合、次の式がtrueとなるような最小値kが返されます。

         (this.charAt(k) == ch) && (k >= fromIndex)
         
        がtrueである。 chがほかの値の場合、次の式がtrueとなるような最小値kです。
         (this.codePointAt(k) == ch) && (k >= fromIndex)
         
        がtrueである。 いずれの場合も、そのような文字がこの文字列内の位置fromIndexかそれより後に存在しない場合は、-1が返されます。

        fromIndexの値に対して制約はない。 負の値の場合は、ゼロの場合と同じ結果になります。この文字列全体が検索されます。 この文字列の長さより大きい場合は、この文字列の長さに等しい場合と同じ結果になり、-1が返されます。

        すべてのインデックスは、char値(Unicodeコード単位)で指定されます。

        パラメータ:
        ch - 文字(Unicodeコード・ポイント)。
        fromIndex - 検索開始位置のインデックス。
        戻り値:
        このオブジェクトによって表される文字列で、指定された文字がfromIndexと同じかこれより大きいインデックス位置にある場合は、最初に出現した位置のインデックス。文字がない場合は-1
      • lastIndexOf

        public int lastIndexOf​(int ch)
        この文字列内で、指定された文字が最後に出現する位置のインデックスを返します。 ch値が0から0xFFFFの範囲にある場合、返されるインデックス(Unicodeコード単位)は、次の式に該当する最大値kです。
         this.charAt(k) == ch
         
        がtrueである。 chがほかの値の場合、次の式がtrueとなるような最大値kです。
         this.codePointAt(k) == ch
         
        がtrueである。 該当する文字がこの文字列内にない場合は、-1が返されます。 Stringの検索は最後の文字から開始され、先頭方向に行われます。
        パラメータ:
        ch - 文字(Unicodeコード・ポイント)。
        戻り値:
        このオブジェクトによって表される文字シーケンス内で、指定された文字が最後に出現する位置のインデックス。文字がない場合は-1
      • lastIndexOf

        public int lastIndexOf​(int ch,
                               int fromIndex)
        この文字列内で、指定された文字が最後に出現する位置のインデックスを返します(検索は指定されたインデックスから開始され、先頭方向に行われる)。 ch値が0から0xFFFFの範囲にある場合、返されるインデックスは、次の式に該当する最大値kです。
         (this.charAt(k) == ch) && (k <= fromIndex)
         
        がtrueである。 chがほかの値の場合、次の式がtrueとなるような最大値kです。
         (this.codePointAt(k) == ch) && (k <= fromIndex)
         
        がtrueである。 いずれの場合も、そのような文字がこの文字列内の位置fromIndexかそれより前に存在しない場合は、-1が返されます。

        すべてのインデックスは、char値(Unicodeコード単位)で指定されます。

        パラメータ:
        ch - 文字(Unicodeコード・ポイント)。
        fromIndex - 検索開始位置のインデックス。 fromIndexの値に対して制約はない。 この文字列の長さと同じかこれより大きい場合は、この文字列の長さより1小さい場合と同じ結果になり、この文字列全体が検索される。 負の値の場合は、-1の場合と同じ結果になり、-1が返される。
        戻り値:
        このオブジェクトによって表される文字シーケンス内で、指定された文字がfromIndexと同じかこれより小さいインデックス位置に最後に出現する位置のインデックス。指定された文字がその位置より前にない場合は-1
      • indexOf

        public int indexOf​(String str)
        この文字列内で、指定された部分文字列が最初に出現する位置のインデックスを返します。

        返されるインデックスは、次の式がtrueとなるような最小値kになります。

        
         this.startsWith(str, k)
         
        このようなkの値が存在しない場合、-1が返されます。
        パラメータ:
        str - 検索対象の部分文字列。
        戻り値:
        指定された部分文字列が最初に出現する位置のインデックス。そのような出現箇所がない場合は-1
      • indexOf

        public int indexOf​(String str,
                           int fromIndex)
        指定されたインデックス以降で、指定された部分文字列がこの文字列内で最初に出現する位置のインデックスを返します。

        返されるインデックスは、次の式がtrueとなるような最小値kになります。

        
             k >= Math.min(fromIndex, this.length()) &&
                           this.startsWith(str, k)
         
        このようなkの値が存在しない場合、-1が返されます。
        パラメータ:
        str - 検索対象の部分文字列。
        fromIndex -検索開始位置のインデックス。
        戻り値:
        指定されたインデックス以降で、指定された部分文字列が最初に出現する位置のインデックス。そのような出現箇所がない場合は-1
      • lastIndexOf

        public int lastIndexOf​(String str)
        この文字列内で、指定された部分文字列が最後に出現する位置のインデックスを返します。 空の文字列「」が最後に出現する位置は、this.length()と見なされます。

        返されるインデックスは、次の式がtrueとなるような最大値kになります。

        
         this.startsWith(str, k)
         
        このようなkの値が存在しない場合、-1が返されます。
        パラメータ:
        str - 検索対象の部分文字列。
        戻り値:
        指定された部分文字列が最後に出現する位置のインデックス。そのような出現箇所がない場合は-1
      • lastIndexOf

        public int lastIndexOf​(String str,
                               int fromIndex)
        この文字列内で、指定された部分文字列が最後に出現する位置のインデックスを返します(検索は指定されたインデックスから開始され、先頭方向に行われる)。

        返されるインデックスは、次の式がtrueとなるような最大値kになります。

        
             k <= Math.min(fromIndex, this.length()) &&
                           this.startsWith(str, k)
         
        このようなkの値が存在しない場合、-1が返されます。
        パラメータ:
        str - 検索対象の部分文字列。
        fromIndex - 検索開始位置のインデックス。
        戻り値:
        指定された部分文字列が最後に出現する位置のインデックス(指定されたインデックスから逆方向に検索を行う)。そのような出現箇所がない場合は-1
      • substring

        public String substring​(int beginIndex)
        この文字列の部分文字列である文字列を返します。 部分文字列は指定されたインデックスで始まり、この文字列の最後までになります。

         "unhappy".substring(2) returns "happy"
         "Harbison".substring(3) returns "bison"
         "emptiness".substring(9) returns "" (an empty string)
         
        パラメータ:
        beginIndex - 開始インデックス(この値を含む)。
        戻り値:
        指定された部分文字列。
        例外:
        IndexOutOfBoundsException - beginIndexが負の値の場合、あるいはこのStringオブジェクトの長さより大きい場合。
      • substring

        public String substring​(int beginIndex,
                                int endIndex)
        この文字列の部分文字列である文字列を返します。 部分文字列は、指定されたbeginIndexから始まり、インデックスendIndex - 1にある文字までです。 したがって、部分文字列の長さはendIndex-beginIndexになります。

         "hamburger".substring(4, 8) returns "urge"
         "smiles".substring(1, 5) returns "mile"
         
        パラメータ:
        beginIndex - 開始インデックス(この値を含む)。
        endIndex - 終了インデックス(この値を含まない)。
        戻り値:
        指定された部分文字列。
        例外:
        IndexOutOfBoundsException - beginIndexが負であるか、endIndexがこのStringオブジェクトの長さより大きいか、あるいはbeginIndexendIndexより大きい場合。
      • subSequence

        public CharSequence subSequence​(int beginIndex,
                                        int endIndex)
        このシーケンスのサブシーケンスである文字シーケンスを返します。

        次のフォームのメソッド呼出しは、

         str.subSequence(begin, end)
        次の呼び出しと正確に同じ動作になります。
         str.substring(begin, end)
        定義:
        subSequence、インタフェース: CharSequence
        APIの注:
        このメソッドが定義されたのは、StringクラスがCharSequenceインタフェースを実装できるようにするためです。
        パラメータ:
        beginIndex - 開始インデックス(この値を含む)。
        endIndex - 終了インデックス(この値を含まない)。
        戻り値:
        指定されたサブシーケンス。
        例外:
        IndexOutOfBoundsException - beginIndexまたはendIndexが負の場合、endIndexlength()より大きい場合、またはbeginIndexendIndexより大きい場合
        導入されたバージョン:
        1.4
      • concat

        public String concat​(String str)
        指定された文字列をこの文字列の最後に連結します。

        引数文字列の長さが0の場合は、このStringオブジェクトが返されます。 それ以外の場合は、このStringオブジェクトで表される文字列と引数文字列で表される文字列とを連結したものを表すStringオブジェクトが返されます。

         "cares".concat("s") returns "caress"
         "to".concat("get").concat("her") returns "together"
         
        パラメータ:
        str - このStringの最後に連結されるString
        戻り値:
        このオブジェクトの文字列の後に文字列引数で表される文字を連結したものを表す文字列。
      • replace

        public String replace​(char oldChar,
                              char newChar)
        この文字列内にあるすべてのoldCharnewCharに置換した結果生成される文字列を返します。

        文字oldCharがこのStringオブジェクトによって表される文字列内にない場合は、このStringオブジェクトへの参照が返されます。 それ以外の場合は、このStringオブジェクトで表される文字列と同じ文字列を表すStringオブジェクトが返されます。ただし、文字列内のoldCharはすべてnewCharに置換されます。

         "mesquite in your cellar".replace('e', 'o')
                 returns "mosquito in your collar"
         "the war of baronets".replace('r', 'y')
                 returns "the way of bayonets"
         "sparring with a purple porpoise".replace('p', 't')
                 returns "starring with a turtle tortoise"
         "JonL".replace('q', 'x') returns "JonL" (no change)
         
        パラメータ:
        oldChar - 以前の文字。
        newChar - 新しい文字。
        戻り値:
        この文字列内のすべてのoldCharnewCharに置換することによって生成された文字列。
      • matches

        public boolean matches​(String regex)
        この文字列が、指定された正規表現と一致するかどうかを判定します。

        このフォームのメソッド呼び出しstr.matches(regex)では、次の式と正確に同じ結果が得られます。

        Pattern.matches(regex, str)
        パラメータ:
        regex - この文字列との一致を判定する正規表現
        戻り値:
        この文字列が指定された正規表現と一致する場合にだけ、trueが返される
        例外:
        PatternSyntaxException - 正規表現の構文が無効な場合
        導入されたバージョン:
        1.4
        関連項目:
        Pattern
      • contains

        public boolean contains​(CharSequence s)
        この文字列が指定されたchar値のシーケンスを含む場合に限りtrueを返します。
        パラメータ:
        s - 検索するシーケンス
        戻り値:
        この文字列がsを含む場合はtrue。そうでない場合はfalse
        導入されたバージョン:
        1.5
      • replaceFirst

        public String replaceFirst​(String regex,
                                   String replacement)
        指定された正規表現に一致する、この文字列の最初の部分文字列に対し、指定された置換を実行します。

        このフォームのメソッド呼び出しstr.replaceFirst(regex, repl)では、次の式と正確に同じ結果が得られます。

        Pattern.compile(regex).matcher(str).replaceFirst(repl)

        置換文字列内でバックスラッシュ(\)とドル記号($)を使用すると、それをリテラル置換文字列として処理した場合とは結果が異なることがあります。Matcher.replaceFirst(java.lang.String)を参照してください。 必要に応じて、Matcher.quoteReplacement(java.lang.String)を使用して、これらの文字に特別な意味を持たせないようにしてください。

        パラメータ:
        regex - この文字列との一致を判定する正規表現
        replacement - 最初に一致するものに置き換えられる文字列
        戻り値:
        結果となるString
        例外:
        PatternSyntaxException - 正規表現の構文が無効な場合
        導入されたバージョン:
        1.4
        関連項目:
        Pattern
      • replaceAll

        public String replaceAll​(String regex,
                                 String replacement)
        指定された正規表現に一致する、この文字列の各部分文字列に対し、指定された置換を実行します。

        このフォームのメソッド呼び出しstr.replaceAll(regex, repl)では、次の式と正確に同じ結果が得られます。

        Pattern.compile(regex).matcher(str).replaceAll(repl)

        置換文字列内でバックスラッシュ(\)とドル記号($)を使用すると、それをリテラル置換文字列として処理した場合とは結果が異なることがあります。Matcher.replaceAllを参照してください。 必要に応じて、Matcher.quoteReplacement(java.lang.String)を使用して、これらの文字に特別な意味を持たせないようにしてください。

        パラメータ:
        regex - この文字列との一致を判定する正規表現
        replacement - 一致するものそれぞれに置き換えられる文字列
        戻り値:
        結果となるString
        例外:
        PatternSyntaxException - 正規表現の構文が無効な場合
        導入されたバージョン:
        1.4
        関連項目:
        Pattern
      • replace

        public String replace​(CharSequence target,
                              CharSequence replacement)
        リテラル・ターゲット・シーケンスに一致するこの文字列の部分文字列を、指定されたリテラル置換シーケンスに置き換えます。 置換は、文字列の先頭から始まり終端まで進みます。たとえば、文字列「aaa」の「aa」を「b」に置換すると、結果は「ab」ではなく、「ba」です。
        パラメータ:
        target - 置換されるchar値のシーケンス
        replacement - char値の置換シーケンス
        戻り値:
        結果として得られる文字列
        導入されたバージョン:
        1.5
      • split

        public String[] split​(String regex,
                              int limit)
        この文字列を、指定された正規表現に一致する位置で分割します。

        この文字列の各部分文字列を含むメソッドにより返される配列は、指定された式に一致する別の部分文字列、またはその文字列の最後で終了します。 配列内の部分文字列の順序は、この文字列内で出現する順序になります。 入力されたどの部分とも式が一致しない場合、配列は1つの要素(つまり、この文字列)だけを保持します。

        この文字列の先頭に、正の幅のマッチがある場合、結果の配列の先頭に、空の先頭部分文字列が含まれます。 先頭のゼロの幅の一致では、そのような空の先頭の部分文字列は生成されません。

        limitパラメータは、このパターンの適用回数を制御するため、結果となる配列の長さに影響を及ぼします。 制限nがゼロより大きい場合、このパターンは最大でn - 1回まで適用され、配列の長さはn以下となります。配列の最後のエントリには、最後に一致した区切り文字以降の入力シーケンスがすべて含まれます。 nが負の値の場合、このパターンの適用回数と配列の長さは制限されません。 nがゼロの場合、このパターンの適用回数と配列の長さは制限されませんが、後続の空の文字列は破棄されます。

        たとえば、次のパラメータが指定された場合の、文字列"boo:and:foo"の結果を示します。

        正規表現、制限、および結果を示す分割の例
        正規表現 制限 結果
        : 2 { "boo", "and:foo" }
        : 5 { "boo", "and", "foo" }
        : -2 { "boo", "and", "foo" }
        o 5 { "b", "", ":and:f", "", "" }
        o -2 { "b", "", ":and:f", "", "" }
        o 0 { "b", "", ":and:f" }

        このフォームのメソッド呼び出しstr.split(regex, n)では、次の式と同じ結果が得られます。

        Pattern.compile(regex).split(strn)
        パラメータ:
        regex - 正規表現の区切り
        limit - 結果のしきい値(上記を参照)
        戻り値:
        この文字列を指定された正規表現に一致する位置で分割して計算された文字列の配列
        例外:
        PatternSyntaxException - 正規表現の構文が無効な場合
        導入されたバージョン:
        1.4
        関連項目:
        Pattern
      • split

        public String[] split​(String regex)
        この文字列を、指定された正規表現に一致する位置で分割します。

        このメソッドの動作は、2つの引数を取るsplitメソッドを、指定された式および制限引数ゼロを指定して呼び出した場合と同じになります。 つまり、結果として得られる配列には後続の空の文字列は含まれません。

        たとえば、次の式が指定された場合の、文字列"boo:and:foo"の結果を示します。

        正規表現と結果を示す分割の例
        正規表現 結果
        : { "boo", "and", "foo" }
        o { "b", "", ":and:f" }
        パラメータ:
        regex - 正規表現の区切り
        戻り値:
        この文字列を指定された正規表現に一致する位置で分割して計算された文字列の配列
        例外:
        PatternSyntaxException - 正規表現の構文が無効な場合
        導入されたバージョン:
        1.4
        関連項目:
        Pattern
      • join

        public static String join​(CharSequence delimiter,
                                  CharSequence... elements)
        指定されたdelimiterのコピーを使用して結合されたCharSequence要素のコピーからなる新しいStringを返します。
        次に例を示します。
        
             String message = String.join("-", "Java", "is", "cool");
             // message returned is: "Java-is-cool"
         
        要素がnullの場合は、"null"が追加されることに注意してください。
        パラメータ:
        delimiter - 各要素を区切る区切り文字
        elements - 結合する要素。
        戻り値:
        delimiterで区切られたelementsからなる新しいString
        例外:
        NullPointerException - delimiterまたはelementsnullである場合
        導入されたバージョン:
        1.8
        関連項目:
        StringJoiner
      • join

        public static String join​(CharSequence delimiter,
                                  Iterable<? extends CharSequence> elements)
        指定されたdelimiterのコピーを使用して結合されたCharSequence要素のコピーからなる新しいStringを返します。
        次に例を示します。
        
             List<String> strings = List.of("Java", "is", "cool");
             String message = String.join(" ", strings);
             //message returned is: "Java is cool"
        
             Set<String> strings =
                 new LinkedHashSet<>(List.of("Java", "is", "very", "cool"));
             String message = String.join("-", strings);
             //message returned is: "Java-is-very-cool"
         
        個々の要素がnullの場合は、"null"が追加されることに注意してください。
        パラメータ:
        delimiter - 結果となるString内のelementsのそれぞれを区切るために使用される文字シーケンス
        elements - elementsが結合されるIterable
        戻り値:
        elements引数からなる新しいString
        例外:
        NullPointerException - delimiterまたはelementsnullである場合
        導入されたバージョン:
        1.8
        関連項目:
        join(CharSequence,CharSequence...), StringJoiner
      • toLowerCase

        public String toLowerCase​(Locale locale)
        指定されたLocaleのルールを使って、このString内のすべての文字を小文字に変換します。 ケース・マッピングは、Characterクラスで指定されたUnicode仕様バージョンに基づいています。 ケース・マッピングは常に1:1の文字マッピングになるとは限らないため、結果として得られるStringが元のStringと長さが異なる場合があります。

        小文字のマッピング例を、次の表に示します。

        ロケールの言語コード、大文字、小文字、および説明を示す小文字のマッピング例
        ロケールの言語コード 大文字 小文字 説明
        tr (トルコ語) \u0130 \u0069 上に点が付いた大文字のI ->小文字のi
        tr (トルコ語) \u0049 \u0131 大文字のI ->点のない小文字のi
        (すべて) French Fries french fries String内の文字すべてを小文字に変換
        (すべて) capiotacapchi capthetacapupsil capsigma iotachi thetaupsilon sigma String内の文字すべてを小文字に変換
        パラメータ:
        locale - このロケールの大文字小文字変換ルールを使用する
        戻り値:
        小文字に変換されたString
        導入されたバージョン:
        1.1
        関連項目:
        toLowerCase(), toUpperCase(), toUpperCase(Locale)
      • toLowerCase

        public String toLowerCase​()
        デフォルト・ロケールのルールを使って、このString内のすべての文字を小文字に変換します。 これは、toLowerCase(Locale.getDefault())の呼び出しと同等です。

        注: このメソッドはロケールに依存するため、単独でロケールと解釈されるような文字列に使用すると、予期せぬ結果を引き起こすことがあります。 例として、プログラミング言語識別子、プロトコル・キー、HTMLタグがあります。 たとえば、トルコ語ロケールの"TITLE".toLowerCase()"t\u0131tle"を返します。ここで、「\u0131」は点のないラテン小文字のIの文字です。 ロケールに依存しない文字列の正しい結果を取得するには、toLowerCase(Locale.ROOT)を使用します。

        戻り値:
        小文字に変換されたString
        関連項目:
        toLowerCase(Locale)
      • toUpperCase

        public String toUpperCase​(Locale locale)
        指定されたLocaleのルールを使って、このString内のすべての文字を大文字に変換します。 ケース・マッピングは、Characterクラスで指定されたUnicode仕様バージョンに基づいています。 ケース・マッピングは常に1:1の文字マッピングになるとは限らないため、結果として得られるStringが元のStringと長さが異なる場合があります。

        ロケール依存および1:Mのケース・マッピングの例を、次の表に示します。

        ロケール依存および1:Mのケース・マッピングの例。 ロケールの言語コード、小文字、大文字、および説明を示します。
        ロケールの言語コード 小文字 大文字 説明
        tr (トルコ語) \u0069 \u0130 小文字のi ->上に点が付いた大文字のI
        tr (トルコ語) \u0131 \u0049 点のない小文字のi ->大文字のI
        (すべて) \u00df \u0053 \u0053 小文字のシャープs -> SSの2文字
        (すべて) Fahrvergnügen FAHRVERGNÜGEN
        パラメータ:
        locale - このロケールの大文字小文字変換ルールを使用する
        戻り値:
        大文字に変換されたString
        導入されたバージョン:
        1.1
        関連項目:
        toUpperCase(), toLowerCase(), toLowerCase(Locale)
      • toUpperCase

        public String toUpperCase​()
        デフォルト・ロケールのルールを使って、このString内のすべての文字を大文字に変換します。 このメソッドは、toUpperCase(Locale.getDefault())と同等です。

        注: このメソッドはロケールに依存するため、単独でロケールと解釈されるような文字列に使用すると、予期せぬ結果を引き起こすことがあります。 例として、プログラミング言語識別子、プロトコル・キー、HTMLタグがあります。 たとえば、トルコ語ロケールの"title".toUpperCase()"T\u0130TLE"を返します。ここで、「\u0130」は上に点が付いたラテン大文字Iの文字です。 ロケールに依存しない文字列の正しい結果を取得するには、toUpperCase(Locale.ROOT)を使用します。

        戻り値:
        大文字に変換されたString
        関連項目:
        toUpperCase(Locale)
      • trim

        public String trim​()
        値がこの文字列である文字列を返します(先頭と末尾の空白は削除される)。

        このStringオブジェクトが空の文字列を表す場合、あるいはこのStringオブジェクトによって表される文字列の最初と最後の文字のコードが'\u0020' (スペース文字)より大きい場合は、このStringオブジェクトへの参照が返されます。

        文字列内に'\u0020'より大きいコードの文字がない場合は、空の文字列を表すStringオブジェクトが返されます。

        それ以外の場合、kを、文字列内で'\u0020'より大きいコードを持つ最初の文字のインデックス、mを、文字列内で'\u0020'より大きいコードを持つ最後の文字のインデックスであるとします。 インデックスkの文字で始まってインデックスmの文字で終わるこの文字列の部分文字列、つまりthis.substring(k, m + 1)の部分文字列を表すStringオブジェクトが返されます。

        このメソッドは文字列の先頭と最後から(上記で定義された)空白を切り取るために使用できます。

        戻り値:
        この文字列の先頭と末尾の空白を削除した値を持つ文字列、またはこの文字列(先頭と末尾に空白が存在しない場合)。
      • toString

        public String toString​()
        このオブジェクト(すでに文字列である)自身が返されます。
        定義:
        toString、インタフェース: CharSequence
        オーバーライド:
        toString、クラス: Object
        戻り値:
        文字列自身。
      • chars

        public IntStream chars​()
        このシーケンスのchar値をゼロ拡張したintを含むストリームを返します。 サロゲート・コード・ポイントにマップするすべてのcharは、解釈されずに渡されます。
        定義:
        chars、インタフェース: CharSequence
        戻り値:
        このシーケンスのchar値のIntStream
      • codePoints

        public IntStream codePoints​()
        このシーケンスからコード・ポイント値のストリームを返します。 そのシーケンスで検出されるサロゲート・ペアがすべて、Character.toCodePointを使用した場合のように結合され、結果がストリームに渡されます。 他のすべてのコード(通常のBMP文字、ペアになっていないサロゲート、未定義のコード単位など)はint値にゼロ拡張されたあと、ストリームに渡されます。
        定義:
        インタフェースCharSequence内のcodePoints
        戻り値:
        このシーケンスからのUnicodeコード・ポイントのIntStream
      • toCharArray

        public char[] toCharArray​()
        この文字列を新しい文字配列に変換します。
        戻り値:
        新しく割り当てられた文字配列。長さはこの文字列の長さと同じで、内容はこの文字列によって表される文字シーケンスが格納されるように初期化されている。
      • format

        public static String format​(String format,
                                    Object... args)
        指定された書式の文字列と引数を使って、書式付き文字列を返します。

        常に使用されるロケールは、Locale.getDefault(Locale.Category)によって返されたロケールで、FORMATカテゴリが指定されています。

        パラメータ:
        format - 書式文字列
        args - 書式文字列の書式指示子により参照される引数。 書式指示子よりも引数が多い場合、余分な引数は無視される。 引数の数は変動し、ゼロの場合もある。 引数の最大数は、Java™仮想マシン仕様で定義されているJava配列の最大次元により制限される。 引数がnullの場合、動作は変換に応じて異なる。
        戻り値:
        フォーマットされた文字列
        例外:
        IllegalFormatException - 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。 考えられるすべての書式エラーの仕様については、フォーマッタ・クラス仕様の「詳細」セクションを参照。
        導入されたバージョン:
        1.5
        関連項目:
        Formatter
      • format

        public static String format​(Locale l,
                                    String format,
                                    Object... args)
        指定されたロケール、書式文字列、および引数を使って、フォーマットされた文字列を返します。
        パラメータ:
        l - 書式設定時に適用するlocale lnullの場合、ローカリゼーションは適用されない。
        format - 書式文字列
        args - 書式文字列の書式指示子により参照される引数。 書式指示子よりも引数が多い場合、余分な引数は無視される。 引数の数は変動し、ゼロの場合もある。 引数の最大数は、Java™仮想マシン仕様で定義されているJava配列の最大次元により制限される。 引数がnullの場合、動作は変換に応じて異なる。
        戻り値:
        フォーマットされた文字列
        例外:
        IllegalFormatException - 書式文字列が、不正な構文、所定の引数と互換性がない書式指示子、書式文字列に指定された不適切な引数、またはほかの不正な条件を含む場合。 考えられるすべての書式エラーの仕様については、フォーマッタ・クラス仕様の「詳細」セクションを参照
        導入されたバージョン:
        1.5
        関連項目:
        Formatter
      • valueOf

        public static String valueOf​(Object obj)
        Object引数の文字列表現を返します。
        パラメータ:
        obj - Object
        戻り値:
        引数がnullの場合は"null"に等しい文字列。それ以外の場合はobj.toString()の値が返される。
        関連項目:
        Object.toString()
      • valueOf

        public static String valueOf​(char[] data)
        char配列引数の文字列表現を返します。 文字配列の内容がコピーされます。コピー後にその文字配列が変更されても、返される文字列には影響しません。
        パラメータ:
        data - 文字配列。
        戻り値:
        文字配列の文字が格納されているString
      • valueOf

        public static String valueOf​(char[] data,
                                     int offset,
                                     int count)
        char配列引数の特定の部分配列の文字列表現を返します。

        offset引数は部分配列の最初の文字のインデックスを表します。 count引数は部分配列の長さを表します。 部分配列の内容がコピーされます。コピー後に文字配列が変更されても、返される文字列には影響しません。

        パラメータ:
        data - 文字配列。
        offset - 部分配列の初期オフセット。
        count - 部分配列の長さ。
        戻り値:
        文字配列内の指定された部分配列の文字が格納されているString
        例外:
        IndexOutOfBoundsException - offsetが負の値の場合、countが負の値の場合、あるいはoffset+countdata.lengthよりも大きい場合。
      • copyValueOf

        public static String copyValueOf​(char[] data,
                                         int offset,
                                         int count)
        valueOf(char[], int, int)と同等です。
        パラメータ:
        data - 文字配列。
        offset - 部分配列の初期オフセット。
        count - 部分配列の長さ。
        戻り値:
        文字配列内の指定された部分配列の文字が格納されているString
        例外:
        IndexOutOfBoundsException - offsetが負の値の場合、countが負の値の場合、あるいはoffset+countdata.lengthよりも大きい場合。
      • copyValueOf

        public static String copyValueOf​(char[] data)
        valueOf(char[])と同等です。
        パラメータ:
        data - 文字配列。
        戻り値:
        文字配列の文字が格納されているString
      • valueOf

        public static String valueOf​(boolean b)
        boolean引数の文字列表現を返します。
        パラメータ:
        b - boolean
        戻り値:
        引数がtrueの場合は"true"に等しい文字列が返され、そうでない場合は"false"に等しい文字列が返される。
      • valueOf

        public static String valueOf​(char c)
        char引数の文字列表現を返します。
        パラメータ:
        c - char
        戻り値:
        1つの文字として引数cが格納された、長さ1の文字列。
      • valueOf

        public static String valueOf​(int i)
        int引数の文字列表現を返します。

        この表現は1つの引数を持つInteger.toStringメソッドによって返されるものとまったく同じです。

        パラメータ:
        i - int
        戻り値:
        int引数の文字列表現。
        関連項目:
        Integer.toString(int, int)
      • valueOf

        public static String valueOf​(long l)
        long引数の文字列表現を返します。

        この表現は1つの引数を持つLong.toStringメソッドによって返されるものとまったく同じです。

        パラメータ:
        l - long
        戻り値:
        long引数の文字列表現。
        関連項目:
        Long.toString(long)
      • valueOf

        public static String valueOf​(float f)
        float引数の文字列表現を返します。

        この表現は1つの引数を持つFloat.toStringメソッドによって返されるものとまったく同じです。

        パラメータ:
        f - float
        戻り値:
        float引数の文字列表現。
        関連項目:
        Float.toString(float)
      • valueOf

        public static String valueOf​(double d)
        double引数の文字列表現を返します。

        この表現は1つの引数を持つDouble.toStringメソッドによって返されるものとまったく同じです。

        パラメータ:
        d - double
        戻り値:
        double引数の文字列表現。
        関連項目:
        Double.toString(double)
      • intern

        public String intern​()
        文字列オブジェクトの正準表現を返します。

        文字列のプールは、初期状態では空で、クラスStringによってプライベートに保持されます。

        internメソッドが呼び出されたときに、equals(Object)メソッドによってこのStringオブジェクトに等しいと判定される文字列がプールにすでにあった場合は、プール内の該当する文字列が返されます。 そうでない場合は、このStringオブジェクトがプールに追加され、このStringオブジェクトへの参照が返されます。

        したがって、任意の2つの文字列stについて、s.intern() == t.intern()trueになるのは、s.equals(t)trueの場合だけです。

        すべてのリテラル文字列および文字列値定数式が保持されます。 文字列リテラルは、『Java™言語仕様』のセクション3.10.5で定義されています。

        戻り値:
        この文字列と同じ内容だが、一意の文字列のプールからのものであることが保証されている文字列。
        Java™言語仕様:
        3.10.5 文字列リテラル