Java 初心者講座3(配列とメソッド)
はじめに
「Javaを始めて間もない」、「基本文法をおさらいしたい」方向けにJavaの基本文法について4回にわたってご紹介します。 今回ご紹介する基本文法は、以下のラインナップとなります。
- 配列
- メソッド
配列
配列とは、同じデータ型の値を複数扱うデータ構造(プログラムで複数のデータを扱うための仕組み)です。 配列と変数の違いを確かめるため、変数にいくつかの値を代入してみます。
public class ArrayEx {
public static void main(String[] args) {
int num1 = 1;
int num2 = 2;
int num3 = 3;
int num4 = 4;
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
}
}
2
3
4
このコードが実行された場合、各データがメモリ内でバラバラに格納されます。
各データがメモリ内でバラバラに格納されるだけではなく、「昇順に並べる」といった処理を行う場合にコードが長く複雑になってしまいます。 そこで、バラバラの変数を一つにまとめて格納したのが、「配列」です。 配列は、データをまとめられるため、非常に便利です。 また、配列にはいくつかの注意点があるので、使用時は気を付けてください。
《配列の注意点》
- 同一種のデータ型しか格納できない int型の配列にString型のデータは格納できない。
- 要素の添え字(index)は、「0」スタート。 要素(配列に格納されるデータ用の箱)の番号は、「0」番から始まる。
存在しない要素をコード内で使うと、例外が発生する。
配列の作成は、以下のステップから成り立ちます。
Step1 配列変数の宣言
配列は、
「要素の型[] 配列変数名」
で宣言します。
「要素の型 配列変数名[]」とする場合もありますが、
どちらを使用しても問題ありません。
Step2 要素の作成
要素は、
「new 要素の型[作成したい要素数]」
で作成します。
Step3 要素の代入
作成した要素は、
「=(代入演算子)」
を用いて配列変数に代入します。
「int型、要素数4、配列変数numArray」の配列は、以下のように作成します。
numArray = new int[4]; //Step2&Step3
また、Step1~Step3を同時に実行することも可能です。
続いて、配列の要素に値を代入(配列の初期化)していきます。
値は、「配列変数[index] = 値」で代入します。
numArray[1] = 2;
numArray[2] = 3;
numArray[3] = 4;
添え字(index)は「0」から始まるので、要素数は4でも、
indexの最大値は、(要素数 - 1) = 3となることに注意してください。
配列の作成と初期化を同時に行うこともできます。
(2)要素の型[] 配列変数名 = {値1,値2,…};
int[] numArray = {1,2,3,4}; //(2)
実は、配列変数の中に値は格納されていません。 配列変数の中には、配列があるメモリのアドレスが格納されています。 プログラムからnumArray[i]と指定されると、格納されたメモリのアドレスにある配列を参照します。 このように値ではなく、メモリのアドレスを代入する変数を、「参照型変数」と呼びます。 一方で、intやbooleanを「基本型変数」と呼びます。
以下の図が、参照型変数のイメージです。
メソッド
コードが長くなるにつれて、全体の把握しにくくなるだけなく、同じようなコードを何度も書く必要が出てきます。
メソッドを用いてコードを部品化(コードを分割)することで、全体をスッキリとさせることができます。
メソッド使用によるメリットは、以下の通りです。
- プログラムの見通しが良くなり、全体を把握しやすくなる
- 修正範囲を限定できる
- 同じ処理に対し何度もコードを書く必要がなくなり、作業効率が上がる
メソッドの作成と使用についてご紹介します。
メソッドの作成
メソッドは、以下の定義で作成します。
メソッドで実施する処理内容
}
- public 「public」を付けることで、全てのクラスで利用可能なメソッドになる。 「public」を付けない場合もあるので、カッコ[]にしています。
- static 「static」を付けない場合もあるので、カッコ[]にしています。
- 戻り値の型 メソッドで処理を実施した後、呼び出し元に値を戻します。 この時、戻される値を戻り値と言います。 どんな型の値が返されるのか示したものが、戻り値の型です。
- メソッド名 処理内容が分かる名前にすると良いでしょう。 複数のメソッドを作成する場合、原則として同じ名前を付けることはできません。
- 仮引数の個数が異なる
- 仮引数の型が異なる
- 引数リスト 呼び出し元からメソッドに渡される値のことです。 引数に指定するデータ型や引数の数(「0」でもOK)は、自由に決めることができます。 引数全てが同じ型である必要はありません。 また、引数を細かく分けると、呼び出し元の引数を実引数、メソッド内の引数を仮引数と呼びます。
戻り値がある場合は、以下のように記述しないとエラーになるので、注意してください。
メソッドで実施する処理内容
return 戻り値;
}
しかし、以下の条件を満たす場合に限って同じ名前を付けることができます。 同じ名前のメソッドを複数定義することを、オーバーロードと言います。
メソッドの使用
メソッドは、「メソッド名(実引数リスト)」で呼び出して、使用します。
メソッドの作成と使用例です。public static void main(String[] args) {
System.out.println("voidMethodメソッドの実施");
voidMethod(); //引数無し
System.out.println("numPlusメソッドの実施");
System.out.println(numPlus(1, 4)); //戻り値を受け取って画面に表示する
}
//戻り値を返さないメソッド
public static void voidMethod() {
System.out.println("System.out.println()は処理内容なので、戻り値は返しません");
}
//戻り値(int型)を返すメソッド
public static int numPlus(int x , int y) {
int z = x + y;
return z;
}
}
System.out.println()は処理内容なので、戻り値は返しません
numPlusメソッドの実施
5
numPlusメソッド内で宣言されている変数zを、ローカル変数と呼びます。 仮引数もローカル変数の一部です。 ローカル変数は、メソッド内でのみ有効な変数であり、別のメソッドで変数zが宣言されていても、これらの変数zは全くの別物です。
まとめ
今回は、「配列」、「メソッド」についてご紹介しました。 お役に立てると幸いです。