はじめに
プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。
Rubyの配列との違い
Javaの配列は、Rubyの配列と性質が異なります。
Javaの配列は、格納する要素の数を最初に決める必要があり、かつ後で要素数を変更することができないようです。
要素を増やす場合は、サイズの大きな配列に新たに作成して元データをコピーするか、ArrayListというリストの一種を使用します。
Javaの配列
class Main {
public static void main(String[] args) {
int[] scores;
scores = new int[3];
scores[0] = 1;
scores[1] = 5;
scores[2] = 10;
System.out.println(scores[0]);
System.out.println(scores[1]);
System.out.println(scores[2]);
}
}
sh -c javac -classpath .:target/dependency/* -d . $(find . -type f -name '*.java')
java -classpath .:target/dependency/* Main
1
5
10
上記のコードについて解説します。
Javaの配列を使用する手順としては、
①配列の宣言を行う
②配列の要素を作成し、配列に代入する
③配列の要素に値を代入する
①配列の宣言を行う
int型の整数を格納する配列の宣言はint[] scores;と記述します。
int[] scores;
この「int」は要素として格納したいデータ型を指定するもので、例えばlong型の整数を格納する配列ならlong[] scores;のように宣言します。
この記述によって、配列という入れ物の宣言を行ったことになります。
②配列の要素を作成し、配列に代入する
scores = new int[3];
このうち、右辺の部分で「new int[3];」とし、
このコードで、int型の要素を3つ作成しています。
そして、配列scoresに代入します。
ここまでのコードによって、配列の宣言と、配列に3つの要素を代入する受け皿を用意することができました。
③配列の要素に値を代入する
最後に行うのが値の代入です。
先ほど以下のコードを記述しました。
scores[0] = 1;
配列scoresの1番目の要素に「1」を代入しています。
この書き方はRubyと似ていて、1番目」を表すインデックスとして「0」を指定することもRubyと同じです。
また、配列の要素を取り出すときは、以下のように行います。
scores[0]
この書き方もRubyと同じです。
配列を使う際の記述方法にはいくつかのバリエーションがあるようなので、記述していきます。
配列の様々な記述方法について
① 配列の宣言と同時に、要素の作成も行う方法
先ほど実行したコードでは、以下のように配列の宣言と要素の作成を別に行っていました。
int[] scores;
scores = new int[3];
この2つは、以下のように1行で記述することもできます。
int[] scores = new int[3];
②配列の宣言時に型推論を使用する方法
型推論を使った配列の宣言は以下のようになります。
var scores = new int[3];
int型の要素3つを代入することで、scoresはそれらを格納する配列であることが推論されています。
③ 配列の宣言から値の代入まで全て同時に行う方法
配列の宣言時に代入する値が確定している場合は、以下のように記述を省略することができます。
int[] scores = {1, 5, 10};
この記述方法が最も簡潔ですが、宣言時に代入する値が確定していない場合は使用できません。
リストについて
リストは、Rubyの配列と似たデータ管理の仕組みです。
以下の特徴があります。
要素を順序づけて管理する
要素を事後的に追加したり削除できる
また、Javaのリストには、以下の2種類があります。
ArrayList
LinkedList
ArrayListについて
ArraListは「可変長配列」を使用するための仕組みです。可変長配列とは、文字通り長さ(要素数)を変更できる配列のことです。
Rubyの配列は可変長なので、Javaの配列よりもArrayListの方が性質や使い方が近いものとなっています。
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<Integer> scores = new ArrayList<Integer>();
scores.add(1);
scores.add(5);
scores.add(10);
scores.add(15);
System.out.println(scores.get(0));
System.out.println(scores.get(1));
System.out.println(scores.get(2));
System.out.println(scores.get(3));
}
}
ArrayListを使用する際は、事前にライブラリのインポートが必要です。
上記のコードを記述する際は、1行目にimport文があることに注意しましょう。
sh -c javac -classpath .:target/dependency/* -d . $(find . -type f -name '*.java')
java -classpath .:target/dependency/* Main
1
5
10
15
上記で記述したコードでは、以下の4つを行なっています。
① ライブラリをインポートする
② ArrayListの宣言を行う
③ ArrayListに値を代入する
④ ArrayListから要素を取り出す
それぞれの使い方について確認します。
① ライブラリをインポートする
ArrayListを使用する際は、ライブラリのインポートが必要です。
インポートするには、ファイルの冒頭に以下の記述を行います。
import java.util.ArrayList;
② ArrayListの宣言を行う
ArrayListの宣言と初期化は以下のように行います。
ArrayList<データ型> scores = new ArrayList<データ型>();
先ほどのコードでは、整数を格納するArrayListを作成したので、以下のように記述しました。
ArrayList<Integer> scores = new ArrayList<Integer>();
ここで行っているのは、以下の2つの動作です。
① 整数(Integer)を格納するArrayListを「score」という名称で宣言
② ArrayListの要素を作成
そして、①に②を代入しています。
なお、要素のデータ型を右辺でも指定していますが、これは省略することが可能です。
以下のように記述しても問題なく動作します。
ArrayList<Integer> scores = new ArrayList<>();
③ ArrayListに値を代入する
ArrayListに要素を追加するためにはaddメソッドを使用します。
記述は、add(要素として追加する値)のように行います。
先ほど実行した以下のコードでは、scoresという名称のArrayListに「1」を追加しました。
scores.add(1);
addメソッドを使用すると、要素はArrayListの末尾に追加されます。
④ ArrayListから要素を取り出す
要素を取り出す際は、getメソッドを使用します。
記述は、get(取得したい要素のインデックス) のように行います。配列から要素を取り出す際と同様に、「1番目」の要素を取り出したい時は、インデックスとして「0」を指定します。
先ほど実行した以下のコードでは、scoresから、1番目の要素を取得しています。
scores.get(0)