一番かんたんなJava入門

これからJavaを始めようという人の為の超入門サイトです。丁寧、簡単にこだわった解説なので初心者にぴったりです

Home » 一番かんたんなJava入門 » 【Java】 コマンドライン引数って何?

【Java】 コマンドライン引数って何?

time 2013/03/15

sponsored link

mainメソッドに渡す引数

 メソッドについての理解が深まったところで、意味も分からず覚えたmainメソッドについてもう一度よく見てみましょう。

public static void main(String[] args){ }

 初めは意味不明なアルファベットの羅列だったと思いますが、ちょっと意味が分かるようになってませんか?

 「public」と「static」は残念ながらまだ横へ置いておくとして、「void」は「戻り値を返しません」という意味でした。

 そして後ろの( )の中には「String[ ] args」が入っていますね。これは、このメソッドはString[ ]を引数として受け取りますってことです。String[ ]というのは、Stringの配列ですね。argsはその配列変数名です(これはただの名前なんで別に「args」じゃなくても良いみたいです)。

 つまり、mainメソッドを呼ぶ時に、引数にString配列を渡して処理させることができるんです。

 引数を渡すと言っても、mainメソッド以外の普通のメソッドの場合なら呼び出す時に( )の中に引数を渡すことができますが、mainメソッドはclassを実行した時に勝手に呼ばれるメソッドなので、

main("引数");

 こんな風に( )の中に引数を渡して呼ぶことができません。(自分でmainメソッドを呼ぼうと思えば呼べるのですが、mainメソッドの中でmainメソッドを呼んでしまうと無限ループになるので現実的に無理です。)

 では、mainメソッドに引数を渡すには一体どうすればいいのか?を説明します。

コマンドライン引数

 mainメソッドに渡す引数のことをコマンドライン引数と言います。

 コマンドプロンプトを立ち上げて、javaファイルのコンパイルとclassの実行を行っていると思いますが、そのコンパイルコマンド(javac)や実行コマンド(java)を打ち込むところをコマンドラインと言います。そこから引数を渡すからコマンドライン引数と言うみたいです。

 具体的にどうやって渡すのか見てみる前に、コマンドライン引数を受け取って処理するclassを簡単に作りましょう。受け取れるのはStringの配列です。受け取った配列の要素を一つずつ画面に出力するだけのclassにします。

CommandLine.java

public class CommandLine{
   public static void main(String[] args){
      for(int i=0; i<args.length; i++){
         System.out.println(args[i]);
      }
   }
}

 for文を使って、受け取った配列の要素を全部順番に出力します。for文が分かりにくい人はこちらをどうぞ→(参考:for文って何?

 では実際に引数を渡してこのclassを実行してみましょう。まずコンパイルします。これは普通です。

command

で、次にclassの実行です。この時に、class名の後に続いてスペースを空けて、引数に渡したい文字列を入力します。スペースを挟んで何個でも文字列を追加していけます。

command2

 クラス名の後ろに入力した文字列がStringの配列となってmainメソッドに渡されます。これでenterを押して実行すると、

command3

渡した文字列が順番に全部出力されました。ちゃんとmainメソッドに渡せてますね。for文を使っているので渡された配列の要素の数だけ出力されます。ぜひ、いろいろ文字列を渡してみてください。

 一つ注意なのですが、mainメソッドはこのように引数を受け取れるように定義されたメソッドなのですが、別に引数無しでも問題なく実行されますよね。

 けど、普通の(mainメソッド以外の)メソッドの場合、何らかの引数を受け取れるように定義すると、そのメソッドを呼ぶ際には必ず指定の型の引数を渡さないと駄目です。定義通りに引数を渡さずにそのメソッドを使うとコンパイルエラーになります。

 引数を受け取れるように定義したメソッドを呼び出す時には、その型の引数を過不足なく渡さないといけないと覚えていて下さい。もし、いろんな引数を柔軟に受け取って処理させたい場合は、そのメソッドをオーバーロードする事で可能になります(参考:メソッドのオーバーロードについて)。

 なんとか基本中の基本部分はクリアできたと思うので、次回はいよいよeclipseを使ってみたいと思います。

 eclipseは非常に高性能な統合開発環境です。高性能すぎて、右も左も分からないうちに使っても余計にややこしいだけですが、ここまでの当入門講座をクリアする程度の知識があればその恩恵を少しは受けられると思います。さっそくインストールして使ってみましょう!

今だけ→転職できなければ全額返金の「エンジニア転職保証コース」
絶対エンジニアになる!→テックエキスパート

フリーランスエンジニアの収入例を見てみる→レバテックフリーランス

全くの初心者がWordPressでブログを始める方法

全くの初心者がWordPressでブログを始める方法

sponsored link

Androidアプリを作ろう

コメント

  • こんにちは。いつもお世話になっております。
    経験は全くないのですが、プログラミング関係の仕事をしたくて勉強のために拝見しております。
    専門書では理解しにくかったのですが、こちらのサイトは非常に理解しやすいです。
    一言お礼を言いたくて挨拶させていただきました。ありがとうございます。
    どうしても理解出来ないことを質問させていただくかもしれませんが、よろしくお願いします。

    by 超初心者 €2014/12/04 22:02

  • 嬉しいコメントありがとうございます。

    >どうしても理解出来ないことを質問させていただくかもしれませんが、よろしくお願いします。
    答えられるかどうか分かりませんが、いつでも質問して下さい。

    頑張って勉強して下さい!

    by Nobuo@管理人 €2014/12/04 22:34

  • 起動引数には全角文字も渡せるはずですが、『残念ながら渡せるのは半角英数字のみです』と書かれているのはどういう意図でしょうか。

    by js €2015/04/09 11:24

  • コマンドプロンプトで全角を入力出来ることを知らなかっただけです。大した意図はございません。ご指摘ありがとうございました。

    by Nobuo@管理人 €2015/04/09 12:42

  • こんにちは。いつも参考にさせてもらっています。
    「classの実行です。この時に、class名の後に続いてスペースを空けて、引数に渡したい文字列を入力します。」の部分なのですが、この通りにすると、エラー:メインクラスCommandLineがみつからないかロードできませんとなるのです。
    他のclassファイルは問題なく実行できるのですが、、どうもこのclassファイルだけ実行できないです。このファイルはなにか特別なのでしょうか?
    コンパイルは問題なくおこなえました。

    by natukusa €2015/04/25 11:17

  • 何も特別なことないですよ。
    どこかにスペルのミスなどはないかよく確認してみて下さい。

    by Nobuo@管理人 €2015/04/25 13:14

  • こんにちわ
    コマンドプロンプトで
    java CommandLine hikisuu1 hikisuu2
    とやるのは出来るのですが、エクリプスでも同じように値を入力したいです
    やり方を教えていただけると助かります

    by 匿名 €2016/06/09 09:27

  • こんにちは
    教材だけでは訳がわからず色々とウェブ上で探していて、こちらにたどり着きました。
    コマンドラインに値を渡して表示する方法は分かったのですが、実際の作業でどんな時にこの機能を使うのでしょうか?

    by モリタ €2018/04/20 19:24

  • >モリタさん
    メインメソッドに引数を渡したい時です。まあ特に実用的ではないかと思います。

    by Nobuo@管理人 €2018/04/20 23:05

  • […] 【Java】 コマンドライン引数って何? […]

    by eclipse フレーム に ドロップ | eclipseブログ €2019/07/02 23:53

down

コメントする



一番かんたんなJava入門

Androidアプリの作り方

忘備録

私の作ったAndroidアプリ

おすすめプログラミングスクール

プログラミングスクール検索

受講スタイル

習得したいスキル

習得したい言語・フレームワーク

オプション

料金

 この本は全く何も分からない初心者の方にお勧めです。プログラミングをするには覚えなければならない事が無茶苦茶いっぱいありますが、この本は教えてくれる順番、その構成が素晴らしいです。RPGのゲームを作るというストーリーにのっとってちょっとずつ難しいことを教えてもらえます。
 無機質で膨大なデータが載っているような本は読む気にならないという方は、こういうストーリー仕立ての本でチャレンジしてみてはいかがでしょうか?(注:RPGを作る為の本ではありません。)

 ある程度、Javaを読み書きできるようになったら、オブジェクト指向について学ぶべきです。本書は、抽象的で分かったような分からんようなオブジェクト指向という考え方について、非常に分かりやすい例を出して説明してくれています。オブジェクト指向とは何なのか?という本質を掴むのにこれほど適した本はないと思います。
 オブジェクト志向の理念を理解できれば、より効率のいいコードをより楽に書けるようになるはずです。Java上級者を目指すなら必読の一冊![詳細]

管理人

Nobuo_CREATE

Nobuo_CREATE

WordPressテーマPrinciple、マテリアルを作ったり、Androidアプリを作ったり、Java入門サイトを作ったり、本を書いたりしています。大阪の北野田駅近くのマイスタイルという学習塾を経営しています。どうぞよろしく。 [詳細]



sponsored link

オススメ書籍

 この本は全く何も分からない初心者の方にお勧めです。プログラミングをするには覚えなければならない事が無茶苦茶いっぱいありますが、この本は教えてくれる順番、その構成が素晴らしいです。RPGのゲームを作るというストーリーにのっとってちょっとずつ難しいことを教えてもらえます。
 無機質で膨大なデータが載っているような本は読む気にならないという方は、こういうストーリー仕立ての本でチャレンジしてみてはいかがでしょうか?(注:RPGを作る為の本ではありません。)

 ある程度、Javaを読み書きできるようになったら、オブジェクト指向について学ぶべきです。本書は、抽象的で分かったような分からんようなオブジェクト指向という考え方について、非常に分かりやすい例を出して説明してくれています。オブジェクト指向とは何なのか?という本質を掴むのにこれほど適した本はないと思います。
 オブジェクト志向の理念を理解できれば、より効率のいいコードをより楽に書けるようになるはずです。Java上級者を目指すなら必読の一冊![詳細]

只今、急拡大中

JavaからのRuby on Rails入門

JavaからのRuby on Rails入門