![]() ![]() ![]() ![]() |
Java 言語のナットとボルト |
他のプログラム言語のように、 Java では配列オブジェクトを通して多数の値をまとめて管理する ことができる。 同じく、 String オブジェクトによって多数の文字で構成されたデータを管理で きる。配列
文字を数えるプログラム例は、(main()
メソッドへのパラメータとして)配列 を宣言するが、決してそれを使用しない。 この節では、Java プログラムで配列を作成し、利用す るために必要な知識を紹介する。他の変数のように、配列を使用する前に最初に宣言しなくてはならない。 また、他の変数のように 、配列の宣言には、配列の型と配列の名前の 2 つの主要な構成要素がある。 配列の型には、配列 内の要素のデータ型が含まれる。 例えば、すべての整数要素を含んだ配列のデータ型は整数の配列 である。 一般的な配列は持つことができない。つまり、その要素のデータ型は、配列が宣言される時に特定 されなくてはならない。 次のような整数の配列の宣言がある。
宣言のint arrayOfInts[];[]
がarrayOfInts
が配列であることを表す。 宣言のint
はarrayOfInts
に含 まれる要素がすべて整数であることを表す。 前の宣言はarrayOfInts
が整数の 配列であることを表している。 宣言は配列要素を含むためにメモリを割り当てない。メモリを割り当てられる 前に
arrayOfInts
の要素に値を代入したりアクセスしようとすると、コンパイラは次のようなエラーをプリントし、プログラムのコンパイルを拒否する。testing.java:64 : Variable array OfInts may not have been initialized.配列の要素にメモリを割り当てるには、配列をインスタンス化しなくてはならない。 Java の
new
の演算子を使用してこれを行う。 (実際に、配列を作成するステッ プは、クラスからオブジェクトを作成するステップに類似している(宣言、インスタンス化、初期化)。 オブジェクト、クラス、インタフェース でオブ ジェクトの作成についてさらに学習することができる。 (特に、 オブジェクトの作成 ページを見なさい。)次の文は
arrayOfInts
に 10 の整数要素を含むために十分なメモリを割り当て る。一般に配列を作成するときは、int arrayOfInts[] = new int[10]new
、配列要素のデータ型、角括弧('[' と ']')内に希望の要素の数を使用する。配列にメモリが割り当てられたので、値をその要素に代入し、それらの値を検索することができる。elementType arrayName[] = new elementType[arraySize]例からわかるように、配列の要素を参照するには、配列名に角括弧を付加する。 角括弧の 間にアクセスしたい要素のインデックスを示す(変数や他の式があってもよい)。 Java では、配 列のインデックスは 0 で始まり、配列の長さマイナス1で終了することに注意しなさい。for (int j = 0; j < arrayOfInts.length; j ++) { arrayOfInts[j] = j; System.out.println("[j] = " + arrayOfInts[j]); }上記のコード例にもう1つの面白い要素がある for ループで、array OfInts の各要素に値を代入し、それらの値をプリントすることを繰り返している。 配列。
length
で現在の長さを検索するarrayOfInts.length
の使用が、すべての Java 配列に提供されるプロパティで あることに注意しなさい。オブジェクトあるいは他の配列のような参照型を含めて、どんな正当な Java データ型でも配列に 含むことができる。 例えば、次は10の String オブジェクトを含むことができる配列を宣言 する。
この配列の要素は参照型である。すなわち、それぞれの要素が String オブジェクトへの参照を含 む。 この時点で、十分なメモリが String 参照を含むために割り当てられているが、 String 自身に対するメモリは割り当てられていない。 もしこの時点でString arrayOfStrings[] = new String[10];arrayOfStrings
の要素 の1つにアクセスしようとすると、配列が空であり、文字列と String オブジェクトを含まな いので、 NullPointerException を得るであろう。 これは Java 言語に不慣れなプログラマにし ばしば混乱をもたらす元である。 実際の String オブジェクトを別に割り当てなければならない。for (int i = 0; i < arrayOfStrings.length; i ++) { arrayOfStrings[i] = new String("Hello " + i); }文字列
文字データの並びが文字列と呼ばれ、String クラス( java.lang パッケージのメンバ)によっ て Java 環境で実装される。 文字数を数えるプログラムは 2 つの異なった場所で文字列を使用している。 1 つ目はmain()
メソッドの定義内である。このコードは、明示的に String オブジェクトを含むString args[]args
という配列を宣言する 。 上記のコードで見たように、空の角括弧は配列の長さがコンパイル時に不明であること を表す。プログラム例での String の2つ目の使用は、2つのリテラル文字列(二重引用符 " と "の間に ある文字列)である。
コンパイラは、リテラル文字列を見つけると、暗黙的に String オブジェクトを割り当てる。 それで、プログラムは暗黙的に前に示された 2 つのリテラル文字列のそれぞれに 2 つの String オブジェクトを割り当てる。"Input has " . . . " chars."String オブジェクトは不変である − すなわち、それらは1度作成されたら変更することができ ない。 java.lang パッケージは異なるクラスである StringBuffer を提供する。そのクラスは、文字データを作成したり操作したりするために使用することができる。Stringと StringBuffers はStringと StringBuffer の使 用を説明する完全なレッスンである。
文字列連結
Java では+
演算子を使用して、容易に文字列を連結することができる。 プログラム例では、出力をプリントす るために Java 言語のこの機能を使用している。 次のコードは、出力を作り出すために3つの文字列 を連結する。連結した2つの文字列がリテラル文字列である(""Input has " + count + " chars."Input has
" と "chars.
"。) 真ん中の文字列は、実際に最初に文字列に変換される整数であり 、他の文字列へ連結される。参照
java.lang.String
Stringと StringBuffer クラス
![]() ![]() ![]() ![]() |
Java 言語のナットとボルト |