2011年8月26日金曜日

Javaの私的まとめ12

Javaのお勉強その12

  1. 基本パッケージその1

    java.lang.*はJavaの基本的なパッケージであり、このパッケージのクラスを用いるときには、java.langを付ける必要はない。

    すべてのクラスのスーパークラスがObjectになる。

    Objectのequalsは==と同じだが、サブクラスでは異なることがある。例えばStringのequalsはオブジェクトの内容を比較するようになっている。

  2. String

    Stringは変更不可な文字列を表すクラスである。

    同じ文字列のリテラルは、同じオブジェクトが割り当てられる。以下のs1、s2は同じオブジェクトが割り当てられ、s1==s2であり、s1.equals(s2)==trueでもある。

    String s1 = "abc";
    String s2 = "abc";

    StringBuffer、StringBuilderはStringとは違い、変更可能な文字列を扱うクラスである。

    StringBufferとStringBuilderはスレッドセーフか否かという違いのみである。単一スレッドのプログラムであれば、StringBuilderが推奨されている。

    StringBuilderのコンストラクタは次の3種類がある(StringBufferでも同様)。

    StringBuilder(); // 空のオブジェクト生成
    StringBuilder(int num); // バッファサイズがnumの空のオブジェクトを生成
    StringBuilder(String str); // sという文字列を持つオブジェクトを生成

    StringBuilderの役に立つメソッド

    insert(int pos,X s); // posにsを入れる。Xは基本データ型やString、Objectが入れられる。
    delete(int start,int end); // インデックスがstartからend-1までの箇所を削除
    setCharAt(int pos,char c); // posの場所の内容をcで置き換える
    // 文字列の長さをlenにする。lenが現在の文字列長よりも小さいと切り捨て、
    // 長い場合は'\u0000'を後ろに埋める。
    setLength(int len);

    StringBuilder、StringBufferは==とequalsは同じ働きをする。

  3. ラッパークラス

    基本データ型にはラッパークラスが定義されており、値は変更できない。boolean以外のラッパークラスは、Numberという抽象クラスのサブクラスになる。

    ラッパークラスのオブジェクトは、対応する値、変数から生成される。

    Character以外のラッパークラスのオブジェクトは文字列からも生成できる。

    Boolean bl = new Boolean("True"); // 大文字が混じってもOK

    valueOfは値からオブジェクトを生成するのに用いられる。

    Integer i = new Integer.valueOf(1);

    ラッパークラスのtoStringメソッドは保持する値を文字列に変換する。

    ラッパークラスから基本データの値を取り出すのは*Value()というメソッドを用いる。

    char pc = wc.charValue();

    文字列から基本データの値を取り出すにはparse*()というメソッドを用いる。

    double d = Double.parseDouble("1.234");

    Integer、Longクラスにはto{Binary,Octal,Hex}Stringというメソッドがあり、10進数の数値を2進数、8進数、16進数に変換した文字列を得ることができる。

    ラッパークラスの比較はequalsメソッドを用いる。ラッパークラスと基本クラスは比較できる。比較する際に、ボクシング・アンボクシング変換が発生し、比較できるようになる。

    Booleanはif文の条件判定に用いることができる。

    Boolean以外のラッパークラスにはMAX_VALUE、MIN_VALUEというpublic static finalなフィールドがある。基本データの最大、最小の値を示している。

  4. ロケール

    ロケールは言語などで特徴づけられる地域を表す。例えば数値を表すフォーマットは地域によって違うため、ロケールによって処理を変えるといったことをする。java.util.Localeというクラスが用意されている。

    Local ljp = new Locale("ja","JP");

    数値を扱うためにjava.text.NumberFormatというクラスが用意されている。通貨を表すために、Currencyというクラスがある。

    import java.util.*;
    import java.text.*;
    
    class localeTest{
        public static void main(String[] args){
    	Locale lus = new Locale("en","US");
    	NumberFormat nf = NumberFormat.getInstance(lus);
    	System.out.println(nf.format(1000));
    	NumberFormat nfc = NumberFormat.getCurrencyInstance(new Locale("ja","JP"));
    	System.out.println(nfc.getCurrency().toString());
        }
    }

    上のプログラムの出力結果は次のようになる。

    1,000
    JPY

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計