Javaのお勉強その12
- 基本パッケージその1
java.lang.*はJavaの基本的なパッケージであり、このパッケージのクラスを用いるときには、java.langを付ける必要はない。
すべてのクラスのスーパークラスがObjectになる。
Objectのequalsは==と同じだが、サブクラスでは異なることがある。例えばStringのequalsはオブジェクトの内容を比較するようになっている。
- 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は同じ働きをする。
- ラッパークラス
基本データ型にはラッパークラスが定義されており、値は変更できない。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なフィールドがある。基本データの最大、最小の値を示している。
- ロケール
ロケールは言語などで特徴づけられる地域を表す。例えば数値を表すフォーマットは地域によって違うため、ロケールによって処理を変えるといったことをする。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 件のコメント:
コメントを投稿