【Java入門(1)メソッド編 #5】コマンドライン引数

 

みのる
こんにちは。笑顔で感謝!✨ みのるコーチです。
今回も、ご覧いただき、ありがとうございます。

今回は

Java入門1 メソッド編 #5
コマンドライン引数

というテーマでお送りします。

今回は メソッド編の最終回です。

これまでの学習でメソッドの便利さを実感できたかたも
多いことと思います。

確実に前進していますね。

素晴らしいと思います。

そして最終回の今回、メインメソッドに
引数を渡す場合のお話 をしますね。

彩香
メソッド編の締めも、頑張ります。
剛留
よろしくお願いします。
みのる
それでは 早速 いってみましょう。

【Youtube版】

Youtubeでもお伝えしていますので
是非チェックしてくださいね。

 

【1】 引数の渡し方

ここまで勉強してきて…

メインメソッドにも String型配列の仮引数 args がある事に
気づいたかたも多いと思います。

public static void main( String[] args ) {
:
:
剛留
そうなんです。気になっていたんですが…。
これって、どうやって使われるんですか?
彩香
メインメソッドは、JVMがプログラムの入り口として
最初に実行するメソッドだから…

JVMが考えて、引数を渡すんでしょうか…?

剛留
そんな、バナナ…。

JVMは、そこまで気が利かないと思うけど…。

彩香
確かに、使われ方が謎の args って感じ…。

2人とも、いい線いってますよ…。

メインメソッドの引数は、私たちが java プログラムを
起動する時に「追加情報」を渡すものです。

これをコマンドライン引数といいます。

java コマンドで プログラムを起動する場合には
指定した クラス名 の後に コマンドライン引数を書きます。

すると、JVMが String型配列にして
メインメソッドに渡してくれます。

例えば、”河合”、”速水” という2つの引数を渡したい場合…

java クラス名 河合 速水

という形で指定します。

彩香
丸括弧とか、カンマは記述しないで、いいんですか?
剛留
確かに、丸括弧を書いて、カンマで区切るイメージですが…。

コマンドライン引数を指定する場合には
クラス名の後、引数と引数の間はスペースで区切ります。

そして、このように起動すると、JVMは以下の順に行います。

➊ 各々の文字列の領域を確保する。
❷ 参照値(番地の情報)の配列を作成する。
❸ 作成した配列の参照値をメインメソッドの仮引数 args に設定する。
❹ メインメソッドを起動する。

するとメソッド側は
仮引数 args[0] で “河合” を使えて…

args[1] で “速水” を使える事となるのです。

【2】 要素数

コマンドライン引数は String型配列 args で渡されますが
この args の要素数は、実行時に決まります。

クラス名の後に、何も書かなければ 0 個、1つ書けば 1 個
2つ書けば 2 個…というようになります。

配列の要素数は、Java超入門で勉強した通り…

配列名.length で取得できましたね。

プログラムの中で、要素数を確認して処理したい場合には
この値を参照するようにしましょう。

彩香
メインメソッドの謎が、また一つ解明されました。
スッキリ感があります。
剛留
起動する時に、メインメソッドに引数を渡せるのは
とっても便利に使えそうですね。
また、演習問題をやります。

【まとめ】

【1】 引数の渡し方
・メインメソッドの引数は
 java プログラムを起動する時に
 追加情報を渡すもの。

・コマンドライン引数という。

・java コマンド実行時に
 クラス名の後に スペース区切りで
 記述する。

・String型配列として渡される。

【2】 要素数
・渡されるString型配列の要素数は
 実行時に決まる。

・配列要素数は、以下で取得できる。

  配列名.length