8.String 
 Stringクラスは文字列を扱うクラス。「System.out.println("ABCD")」といった"ABCD"は実はStringクラスのインスタンスだったのである。Stringクラスを使うと文字を置換したり、文字列を検索したりすることができるようになる。
 Stringクラスの文字列は「+」演算子を使って結合することができるが、Stringクラス文字列は定数として扱われるため、文字列の長さが変わるような結合などを頻繁に行うと処理時間を要したりする。この場合には、StringBufferクラスを用いる。

import java.lang.String

コンストラクタ
String()
      空の文字列を作成する。
String(String org)
      指定されたorgと同じ文字列を作成する。
String(char[] value)
      指定された文字配列からなる文字列で初期化した文字列を作成する。
              nullが与えられた場合にはNullPointerExceptionが投げられる。
String(char[] value, int offset, int count)
      指定された文字配列からのoffset番目の文字からcountで指定された文字数の文字列を作成する。
      valueがnullの場合にはNullPointerExceptionが投げられる。
      offset, countが範囲外になった場合IndexOutOfBoundsExceptionが投げられる。
String(byte[] bytes, int offset, int count)
      指定されたバイト配列からのoffset番目の文字からcountで指定された文字数の文字列を作成する。プラットフォームのデフォルト文字セットを使用して文字列に変換するため、プラットフォームによって文字化けする可能性もある。
String(byte[] bytes)
      指定されたバイト配列から文字列を作成する。プラットフォームのデフォルト文字セットを使用して文字列に変換するため、プラットフォームによって文字化けする可能性もある。
 
メソッド
int length()
      文字列の文字数を返す。C++などと違って、Javaではunicode文字なので、感じなども1文字とカウントされる。
char charAt(int index)
      index番目の文字を返す。最初の文字は0になる。indexが不正の場合はIndexOutOfBoundsExceptionが投げられる。
byte[] getBytes()
      この文字列をバイト配列に変換する。プラットフォームのデフォルト文字セットを使用するため、他のプラットフォームでは文字化けする可能性がある。
boolean equals(Object str)
      指定したstr(strはStringクラス)と比較する。同じ文字列であればtrueが返される。大文字小文字は区別される。「==」演算子では参照先が同じかを比較する演算子なので、同じ文字列でもfalseが返される場合がある。したがって、文字列の比較にはequals演算子を使う。
boolean equalsIgnoreCase(String str)
      指定した文字列strと比較をする。同じ文字列であればtrueが返される。大文字小文字は区別されない。
int compareTo(String str)
      Unicodeの辞書式に従って文字列を比較する。strの方が辞書の後にあれば負数が、strの方が辞書の前にあれば正数が返される。equalsメソッドでtrueが返される場合には0が返される。strがnullの場合にはNullPointerExceptionが投げられる。
boolean startsWith(String prefix)
      文字列がprefixで始まる場合にtrueが返される。
      引数がnullの場合にはNullPointerExceptionが投げられる。
boolean startsWith(String prefix, int offset)
      offset番目の文字列がprefixで始まる場合にtrueが返される。
      引数がnullの場合にはNullPointerExceptionが投げられる。
boolean endsWith(String suffix)
      文字列がsuffixで終わる場合にtrueが返される。
      引数がnullの場合にはNullPointerExceptionが投げられる。
int indexOf(int ch)
      文字列を最初から最後に向かって検索し、文字(char型ではなくint型にキャストして引数として渡す)chが最初に出てきたインデックスを返す。指定した文字が見つからない場合には-1が返される。
int indexOf(int ch, int fromIndex)
      文字列をfromIndex番目の文字から最後に向かって検索し、文字(char型ではなくint型にキャストして引数として渡す)chが最初に出てきたインデックスを返す。指定した文字が見つからない場合には-1が返される。
int indexOf(String str)
      文字列を最初から最後に向かって検索し、文字列strが最初に出てきたインデックスを返す。指定した文字が見つからない場合には-1が返される。strがnullの場合にはNullPointerExceptionが投げられる。
int indexOf(String str, int fromIndex)
      文字列をfromIndex番目の文字から最後に向かって検索し、文字列strが最初に出てきたインデックスを返す。指定した文字が見つからない場合には-1が返される。
      strがnullの場合にはNullPointerExceptionが投げられます。
int lastIndexOf(int ch)
      文字列を最後から最初に向かって検索し、文字(char型ではなくint型にキャストして引数として渡す)chが最初に出てきたインデックスを返す。指定した文字が見つからない場合には-1が返される。
int lastIndexOf(int ch, int fromIndex)
      文字列をfromIndex番目から最初に向かって検索し、文字(char型ではなくint型にキャストして引数として渡す)chが最初に出てきたインデックスを返す。指定した文字が見つからない場合には-1が返される。
int lastIndexOf(String str)
      文字列を最後から最初に向かって検索し、文字列strが最初に出てきたインデックスを返す。指定した文字が見つからない場合には-1が返される。strがnullの場合にはNullPointerExceptionが投げられる。
int lastIndexOf(String str, int fromIndex)
      文字列をfromIndex番目から最初に向かって検索し、文字列strが最初に出てきたインデックスを返す。指定した文字が見つからない場合には-1が返される。strがnullの場合にはNullPointerExceptionが投げられる。
String substring(int beginIndex)
      この文字列の部分文字列である新しい文字列を返す。部分文字列は指定されたインデックスで始まり、この文字列の最後までになる。例えば"unhappy".substring(2) では "happy" が返される
"矢田亜紀子".substring(2) では "亜紀子" が返される。引数が不正の場合にはIndexOutOfBoundsExceptionが投げられる。
String substring(int beginIndex, int endIndex)
      この文字列の部分文字列である新しい文字列を返す。部分文字列は、指定された beginIndex から始まり、インデックス endIndex – 1 にある文字まで。
      例えば"smiles".substring(1, 5) では "mile" が返される。"北海道、東京、沖縄".substring(4, 6) では "東京" が返される。引数が不正の場合にはIndexOutOfBoundsExceptionが投げられる。
String concat(String str)
      文字列strを最後に連結した文字列を返す。「+」演算子を用いることもできる。
      例) "ABC".concat("DEF") と "ABC"+"DEF"は同じ。
      strがnullの場合にはNullPointerExceptionが投げられる。
String replace(char oldChar, char newChar)
      文字列内のoldCharをnewCharに置換した文字列を返す。
String toLowerCase()
      文字列内の大文字を小文字に変換する。unicodeで比較されますので全角アルファベットなども変換される。
String toUpperCase()
      文字列内の小文字を大文字に変換する。unicodeで比較されますので全角アルファベットなども変換される。
String trim()
      文字列のコピーを返す。ただし、最初と最後の空白文字(\u0020以下の文字)は省略される。全角スペースは削除されない。
char[] toCharArray()
      文字列をchar配列に変換する。
void insertElementAt(Object obj, int index)
      Vectorの指定されたindexに、指定されたオブジェクトを要素として挿入する。
String valueOf(Object obj)
      objのtoStringが呼ばれます。objがnullの場合は"null"が返される。デバッグ作業中やエラーメッセージでそのクラスのインスタンスの中身を表示させたい時などにも利用される。
String valueOf(boolean b)
      bがtrueの場合は"true"が、falseの場合は"false"が返される。デバッグ作業中やエラーメッセージでそのクラスのインスタンスの中身を表示させたい時などにも利用される。
String valueOf(char ch)
      chの文字をString型に変換した1文字の文字列が返される。
String valueOf(int n)
      nを文字列に変換した文字列が返される。例えばn=100ならば"100"が返される。
String valueOf(long n)
      nを文字列に変換した文字列が返され
。例えばn=100ならば"100"が返される。
String valueOf(float n)
      nを文字列に変換した文字列が返される。例えばn=100ならば"100"が返される。
String valueOf(double n)
      nを文字列に変換した文字列が返される。例えばn=100ならば"100"が返される。
   
sample) Stringクラスの基本
import java.io.*;
imoprt java.util.*;

class Test{
     public static void main (String args[ ] ) {
         //equalsメソッドと==演算子の違い
         //==演算子はインスタンスが同じものかどうかを調べ、その内容を調べない。
         //equalsメソッドは、インスタンスが違っても、内容が同じであればtrueを返す。
       ZString str1 = new String ("矢口真里" );
       ZString str2 = new String ("矢口真里" );

       ZSystem.out.print( "str1 == str2 : " );
       ZSystem.out.print( str1 == str2 );
       ZSystem.out.print( "str1.equals(str2) : " );
       ZSystem.out.print( "str1.equals(str2)  );
       ZSystem.out.print( );

         //replaceの例(C言語などと違い、2バイト文字もJavaでは1文字である)
       ZSystem.out.print( str1.replace(’理’,’里’) );
       ZSystem.out.print( );

         //contactメソッドと+演算子
       Zstr2 = "abcde"
       ZSystem.out.print( "\"123\" + "123" + str2 );
       ZSystem.out.print( "\"123\".contact(str2) : "123".contact(str2) );
       ZSystem.out.print( );

         //パス名からファイル名などを取り出す例
       ZSystem.strFileName;
       ZSystem.strPath;
       ZSystem.strSttribute;
         str1 = "C:\\Document and Settings\\administrator\\デスクトップ\\新しいフォルダ\\test.java";

         //拡張子
       Ztry {
            strAttribute = str1.substring( str1.lastIndexOf( ’,’), str1.length( ) ) ;
       }
catch(IndexOutOfBoundsException e) {
            strAttribute = "";
        }
         //パス名
       Ztry {
            strPath = str1.substring( 0,str1.lastIndexOf(’\\’) ) ;
       }
catch(IndexOutOfBoundsException e) {
            strPath = "";
        }
         //ファイル名
       Ztry {
            strFileName = str1.substring( str1.lastIndexOf( ’\\’)+1, str1.length( ) ) ;
       }
catch(IndexOutOfBoundsException e) {
            strFileName = "";
        }

       ZSystem.out.println("拡張子 : " + strAttribute);
       ZSystem.out.println("パス名 :" + strPath );
       ZSystem.out.println("ファイル名 : " + strFileName);
       }
}

C:\Java\>java Test map 
str1 == str2 : false 
str1.equals(str2) : true 

矢口真里 
"123" + str2 : 123abcde 
"123".concat(str2) : 123abcde 

拡張子:.java 
パス名:C:\Documents and Settings\administrator\デスクトップ\新しいフォルダ 
ファイル名:test.java 

C:\Java\>