String類Strigbuffer類の簡単な方法

7004 ワード

system類のいくつかの問題
long a = System.currentTimeMillis();
System.current TimeMillis()この方法は、現在の時間と世界を調整している時の1970年1月1日午前中の時間差を表示します(ミリ秒単位で測定します)。
int[] arr1 ={1,2,3,4,5,6}; 
int[] arr2 ={1,1,1,1,1,1};
System.arraycopy(arr1,i,arr2,j,6);
以上は配列のコピー機能です。arr 1配列の下付きiからarr 2の下付きjまでコピーし始めます。長さはarr 1.length-1です。
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
配列を文字列出力に変換
System.out.println(System.currentTimeMillis());
long b = System.currentTimeMillis();
System.out.println("      "+(b-a));
この行はb-aでこのコードの運行用を求めることができます。ミリ秒単位で動作します。このコードの運行時間が一ミリ秒未満なら、b-aは0に等しいかもしれません。1に等しいかもしれません。
System.out.println(System.getenv());
現在のシステムの情報を表示します。
Date d1 = new Date(111111111);
Date d2 = new Date(111111112);
System.out.println(d1.before(d2));  //  true
System.out.println(d1.after(d2));   
beforeはafterと似ています。2時間の朝と夜を比較して、bolean型に戻ります。
System.out.println("user.dir="+System.getProperty("user.dir"));
プロジェクトディレクトリ
System.out.println("user.name="+System.getProperty("user.name"));
使用者名
System.out.println("os.arch="+System.getProperty("os.arch"));
システムのビット数
System.out.println("os.version="+System.getProperty("os.version"));
バージョンを返します
System.out.println(System.getProperty("user.dir"));
指定された属性を取得
System.out.println(System.getProperties());
現在のシステム属性を取得
String類
初期化
char[] shu = {'a','b','c','d'};
String s1 = new String(shu);//      String  ,                 
System.out.println(s1);
結果:abcd
String s2 = new String(shu,0,3);//      String  ,                   
System.out.println(s2);
結果:abc
String s3 = new String(s2);//       String  ,                 
System.out.println(s3);
結果:abc
文字列が他の種類の値と接続演算されると、Javaは他のタイプの値を自動的に文字列に変換します。
int i = 10;String str = "i="+i;

System.out.println(str);
結果:i=10 System.exit(0)//プログラムを終了
String s4 = new String("abcd12");
System.out.println(s4.length()+" "+s4.charAt(2));
文字列.length()は文字列の長さを求めて、文字列.chAt(i)は文字列の第iの文字を求めます。結果は6 cです。
String s5 = s4.substring(2);
System.out.println(s5);
文字列.substring(i)iの位置から文字列から残りの文字列を新しい文字列として取り出す--cd 12
String s6 = s4.substring(2, 4);
System.out.println(s6);
文字列.substring(i,d)はi位置からd(dを含まない)まで終了し、残りの文字列を文字列から取り出して新しい文字列とします。cd
    String s7 = new String("abcde");
    String s8 = new String("abcdE");
    System.out.println(s7.equals(s8));//String   equals()
    //false
    System.out.println(s7.compareTo(s8));
    //32
この方法は2つの文字列を比較して、その比較過程は実際には2つの文字列の中の同じ位置の文字をUnicode内の順序で逐次比較した結果である。比較中に、2つの文字列が完全に等しい場合、compreTo方法は0を返します。比較過程で、異なる点が発見された場合、compreTo方法は0より大きい整数を返します。そうでなければ0より小さい整数を返します。
    System.out.println(s7.compareToIgnoreCase(s8));//          
    //0
    System.out.println(s7.concat(s8));//abcdeabcdE
この方法のパラメータはStringクラスのオブジェクトであり、パラメータ中の文字列strを元の文字列の後ろに接続する役割を果たしています。
    String s9 = s7.concat(s8);//abcdeabcdE
    System.out.println(s9.indexOf('c'));//2
この方法は、現在の文字列の特定の文字chの出現位置を検索します。この方法は最初から後へ検索します。文字列で文字chを見つけたら文字列で最初に出現した位置を返します。文字列全体に文字chが見つからない場合は-1を返します。
    System.out.println(s9.indexOf('c',5));//7
この方法は前の方法と同様であり、この方法はfrom Index位置から後方に検索し、文字chが文字列で初めて現れる位置を返している点で異なる。
    System.out.println(s9.lastIndexOf('c'));//7
この方法は文字列の末尾の位置から前へ検索します。返したのは文字列の最初に現れた文字chの位置です。
    String s11 = new String("aBcDe");
    System.out.println(s11.toLowerCase());//abcde
この方法は文字列のすべての文字を小文字に変換し、変換後の新しい文字列を返します。
    System.out.println(s11.toUpperCase());//ABCDE
この方法は文字列のすべての文字を大文字に変換し、変換後の新しい文字列を返します。
    String s12 = new String("aaBBccBB");//aaBBffBB
    System.out.println(s12.replace('c', 'f'));
この方法は現在の文字列のすべての文字のoldCharを文字newCharで置換し、新しい文字列を返します。
    System.out.println(s12.replaceFirst("BB","ee"));//aaeeccBB
この方法は、現在の文字列で遭遇した最初の文字列regexと一致する部分列を文字列replaccementの内容で置き換え、生成した新しい文字列を返します。
    System.out.println(s12.replaceAll("BB", "ee"));//aaeeccee
この方法は、現在の文字列で遭遇したすべての文字列regexと一致する部分列を文字列replaccementの内容で置き換え、生成した新しい文字列を返します。
    String s13 = new String("xxx");
    char[] ch1 = new char[s13.length()];
    s13.getChars(0,3,ch1,0);
文字列s 13を0から3までの値を文字配列ch 1に格納し、文字列の長さを求める文字列。length()
    String s14 = "Java";
    String s15 = new String("Java");
    String s16 = s14.intern();
    if(s14==s16){  //     
            System.out.println("s16==s15");
    }
    else{
            System.out.println("s14!=s15");
    }
    if(s14.equals(s15)){
            System.out.println("s14 equals s15");
    }else{
        System.out.println("s14 not equals s15");   
    }
結果s 16==s 15 s 14 equals 15
StringとString Burer
Stringクラスを使用して文字列のスティッチング効率が低く、文字列の後に文字を追加するたびに、文字列オブジェクトは新しい格納空間を必要とします。文字列を追加すると、空間の割り当てを繰り返す必要があります。
StringBuffer類を使うとこの問題を避けることができます。Stringクラスとは違って、StringBufferやStrigBuider類のオブジェクトは複数回修正され、新たな未使用オブジェクトは生成されない。StringBuider類はJava 5で提案されていますが、StringBurerとの最大の違いは、StrigBuiderの方法がスレッド安全ではないことです。StringBuffer類では、apped()方法でしかつなぎ合わせられません。
    StringBuffer s17 = new StringBuffer(s15);
    StringBuffer s18 = new StringBuffer(3);
    //  :   String              。
一つのSteringBuffer類を修正するオブジェクトは、新しい文字列オブジェクトを作成する必要はなく、元の文字列を直接操作してメモリを割り当てる場合、文字のスペースを除いて、16文字サイズのバッファを追加します。StringBufferの長さは、その中に格納されている文字の個数を指します。容量はバッファに収容できる最大文字数です。
    System.out.println(s17.length());//    StringBuffer          。
    //4
    System.out.println(s17.capacity());//    StringBuffer             。
    //20

    StringBuffer s19 = new StringBuffer("abcdef");
    System.out.println(s19.delete(1,3));//   start end-1   
    //adef
    System.out.println(s19.reverse());//     
    //feda
文字列が常に変化している場合は、SteringBufferを使った方がいいです。もし定義されたら、この文字列の値はあまり変わらないなら、Steringを使います。
Stringを定義したら、その内容を変えるなら、メモリアドレスの中に新しい場所を作って新しい内容を与える必要があります。このようにすれば、頻繁に変更するとメモリに大きな消費が発生します。String Bufferを使うと、中身をどう変えてもメモリの中で一つだけです。多くのメモリを消費しなくてもいいです。
JavaではStringBufferとStringはある程度の違いがあります。まず、Stringはfinalによって修飾されています。彼の長さは可変ではなく、Stringを呼び出しても大丈夫です。
concat方法は、文字列をつなぎ合わせて新たにオブジェクトを作成し、スティリング後のStringの値を新たに作成したオブジェクトに割り当てますが、SteringBufferの長さは可変で、String Bufferのapendメソッドを呼び出して、Stering Bufferの長さを変えます。メモリが非常に消費されます。String長さは可変ではありません。
StringBufferとStrigBuiderの長さが可変で、StringBufferスレッドの安全性が低いため、StrigBuilderスレッドの速度が速いです。