こんにちは。たいら(@tairaengineer2)です。
今回の記事は、Javaで開発する人ならだれでもお世話になるeclipseのデバッグの機能の1つである「値の変更」の解説記事です。
ArrayListの「値の変更」の仕方をできるだけわかりやすく、現役Javaエンジニアのたいらが解説します。
String型の変数や配列の「値の変更」の解説は↓記事をご参照ください。
HashMapの「値の変更」の解説は↓記事をご参照ください。
スポンサーリンク
前提条件:eclipseの環境
この記事では、eclipseのバージョンは
バージョン | Eclipse4.7 Oxygen |
---|
を使っています。
インストールの仕方は、下の記事をご参考ください。
下準備
ArrayListの「値の変更」の解説に使うプログラムは、String型のArrayListを作り表示させるという単純なプログラムです。
Javaプログラムと、値の変更を行わなかった場合の実行結果を見てみましょう。
Java
package debugSample;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* デバッグでArrayListの「値を変更する」を練習するクラス
*/
public class ArrayListDebugSample {
public static void main(String[] args) {
List<String> debugList = new ArrayList<String>(Arrays.asList("Japan", "America", "France"));
System.out.println("---値を変更する前---");
debugList.stream().forEach(debug -> System.out.println(debug));
System.out.println("---値を変更した後---");
debugList.stream().forEach(debug -> System.out.println(debug));
}
}
値を変更しない時の実行結果
---値を変更する前---
Japan
America
France
---値を変更した後---
Japan
America
France
当たり前ですが、「値の変更」をしてないので同じものが表示されてます。
では、「値の変更」をやっていきます。
ArrayListを「値の変更」する
では値の変更をしていきます。
ブレークポイントはここに置きます。
ブレークポイントとは、通常の「実行」ではなく「デバッグ」で実行した場合、ブレークポイントで指定した行を実行する前で止まってくれるポイントです。
今回でいうと、19行目の
debugList.stream().forEach(debug -> System.out.println(debug));
が実行される前に変更したいので、19行目以下にブレークポイントを設定すればOKです。
今回は18行目に設定します。
ブレークポイントの設定の仕方は、以下の記事をご参考ください。
eclipseの上部にある「実行」タブに「デバッグ」があるのでそこをクリック。
するとブレークポイントの指定した通りに止まってくれます。
もちろん中断中なので、画面に出力していません。
では「値の変更」をしていきます。
ブレークポイントで中断しているとデバッグ画面になり、画面右上に「変数」タブ、「ブレークポイント」タブ、「式」タブがあります。
そこで「変数」タブを選択。
ここでは今宣言されている変数の状態を見ることができます。
今のdebugListの中身を見てみます。
見るときは、debugListを左クリック。
今はまだ「値の変更」をしてないので、debugListの中身は
[Japan, America, France]
です。
では、「値の変更」をしていきます。
debugListの上で右クリックをします。
すると、「値の変更」をいう項目があるのでそれを左クリックで選択します。
このような画面が現れます。
ここでdebugListの「値の変更」をします。
new ArrayList<String>(Arrays.asList("Italian", "Canada", "Germany"))
というように入力します。
その状態でOKボタンをクリックします。
debugListの中身が変更されました!
この状態でF8ボタンかまたは
赤枠で囲っている再開ボタンを押します。
この再開ボタンは、次のブレークポイントまで一気に処理が進みます。
なのでこのプログラムでは次のブレークポイントが無いので、プログラムの最後まで処理が進みます。
では、再開ボタンを押してみます!
すると処理が終わり、変更した通りの値が表示されました!
もちろん「値の変更」をする前のArrayListの長さと変わっても全然OKです。
たとえば
new ArrayList<String>(Arrays.asList("China"))
というように長さを短くして実行しても
---値を変更する前---
Japan
America
France
---値を変更した後---
China
というように表示されます。
また長さを長くしても
new ArrayList<String>(Arrays.asList("India", "Thailand", "Turkey","Mexico","Indonesia"))
---値を変更する前---
Japan
America
France
---値を変更した後---
India
Thailand
Turkey
Mexico
Indonesia
このように変更した通りに表示されます。
スポンサーリンク
ポイントを解説
このデバッグでポイントは下記2点です。
- 何故「new ArrayList」なのか
- import文
何故「new ArrayList」なのか
何故いちいち「new ArrayList」をしているかと言いますと、こうしないと値の変更ができないからです。
これをご覧ください。
このように1回目のArrayListを表示した後で、「値の変更」をしようとしているとします。
変更前なので、全く変わっていない状態です。
この状態の時に、"Japan"を変更してみます。
[0]の上で右クリックをします。
「値の変更」を選択します。
このような画面が出てきます。
ここに例えば
new String("China");
と入力して、OKボタンを押します。
エラーメッセージはでませんが、値の変更が出来ていません。
なので、「new ArrayList」をして「値の変更」をしています。
import文
値の変更するために
new ArrayList<String>(Arrays.asList("Italian", "Canada", "Germany"))
と入力しました。なので
import java.util.Arrays;
というimport文が必要なのがポイントです。
このimport文があることで
Arrays.asList
のメソッドを使うことができます。
もしこのimport文がない場合
new ArrayList<String>(java.util.Arrays.asList("Ireland"))
というようにArraysの前にjava.util.を入れてやればOKです!
スポンサーリンク
まとめ
以上がeclipseでArrayListの「値の変更」のやり方です。
いかがでしたか?あなたのご参考になれば幸いです。
ではでは~(・ω・)ノシ
ほかにもJavaの記事を書いてます。
よければご参考ください。
【Java】標準入力から判定して、じゃんけんゲームをするプログラム
こういう解説記事を書いてほしい!
もっと詳しく書いてほしい!
などありましたら、こちらのお問い合わせフォームにお気軽にご連絡ください。