〜文字列操作〜
 文字列連結
 まず一番最初にやるのは文字列操作です。文字列操作と言うのは文字列同士を足したり、
文字列の一部を削除したり、文字列の一部を取り出したりというような感じの事です。

文字列同士を足したい場合
例:変数str1にあるTeraと変数str2にあるOmegaを足して変数str1をTeraOmegaにしたい。
  1. +演算子を使う
 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
class JavaApi1_1{
    public static void main(String[] args){
        String str1 = "Tera";
        String str2 = "Omega";
        str1 += str2;
        System.out.println(str1);
    }
}
文字列同士は +演算子を使って足すことができるです。
5行目がそれにあたるですね!

  2. Stringクラスのconcat()メソッドを使う
 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
class JavaApi1_2{
    public static void main(String[] args){
        String str1 = "Tera";
        String str2 = "Omega";
        str1 = str1.concat(str2);
        System.out.println(str1);
    }
}
文字列同士をStringクラスにあるconcat()メソッドの引数に足したい文字列を
入れるです。5行目がそれにあたるですね!

  3. StringBuffeクラスのappend()メソッドを使う
 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
class JavaApi1_3{
    public static void main(String[] args){
        StringBuffer str1 = new StringBuffer("Tera");
        String str2 = "Omega";
        str1.append(str2);
        System.out.println(str1.toString());
    }
}
文字列同士をStringBufferクラスにあるappend()メソッドの引数に足したい文字列を
入れるです。5行目がそれにあたるですね!

 こんなにやり方があるとどれを使ったらいいか迷っちゃうですね!
わたしの場合普段はほとんど + で文字列通しを足しているですが、実際内部での処理
は違うです。+やconcat()を使った場合はstr1にstr2を足しているわけではないのです。
実を言うとStringクラスで作った文字列は変更ができないのです。でも文字列が足され
ているように見えるのは、もう一度新しいstr1を作ってそこにstr1とstr2を足した文字
列が入ってくるというような形になっているのです。これは、Stringクラスを利用した
メソッドすべてに言えることです〜。
 そこでStringBufferクラスを利用するです。StringBufferクラスは、Stringクラスと
違って、もう一度作り直さなくても足す事ができるのです。もう一度作らないと言う
事は処理速度も速いということになるですね!
実際にはconcat()メソッドとappend()メソッドの処理速度はほとんど近いです。
でも+をでやると遅いです。(たくさんの文字列を足したときにその違いがでて来るです)

 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
class JavaApi1_4{
    public static void main(String[] args){
        String str = "Omega";
        long st, et;
        
        // +を使用 (繰り返し回数は少なくしてある)
        st = System.currentTimeMillis();
        String str1 = "Tera";
        for(int i=0; i<=5000; i++){ str1 += str; }
        et = System.currentTimeMillis();
        System.out.println("+を利用:" + (et - st) / 1000.0);

        //concat()を使用
        st = System.currentTimeMillis();
        String str2 = "Tera";
        for(int i=0; i<=1000000; i++){ str2.concat(str); }
        et = System.currentTimeMillis();
        System.out.println("concat()を利用:" + (et - st) / 1000.0);
        
        //append()を使用
        st = System.currentTimeMillis();
        StringBuffer str3 = new StringBuffer("Tera");
        for(int i=0; i<=1000000; i++){ str3.append(str); }
        et = System.currentTimeMillis();
        System.out.println("append()を利用:" + (et - st) / 1000.0);
    }
}

System.currentTimeMillis()は現在の時間を求めることができるです。
処理の初めと終わりに呼び出して、その差を引いてあげれば何秒かかった
か知る事ができるです。戻り値の単位はミリ秒なので1000で割って秒に
直しているです。  +のところの処理は、ものすごく遅いのであえて繰り返し数値を低くしてあるです。 それでも他の2つより遅いはずです。

TOPに戻る   JavaAPIに戻る