質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

5回答

11490閲覧

「コマンドライン引数」というのが何なのかよく分かりません。

prog1717nm

総合スコア56

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/08/09 10:58

「コマンドライン引数」の定義なんですが、調べると、「main関数に渡す引数」というのが出てくるのですが、mainメソッドに引数を渡すとはどういうことでしょうか。
例えば、以下のようなプログラムがあるとします。

public class Factorial { public static void main(String[]args){ int n,f,i; n=5; f=1; i=1; while(i<=n){ f=i*f; i=i+1; } System.out.println(f); } }

このプログラムはString[]argsの部分がコマンドライン引数ってことですよね?では今回の場合引数というのはn=5; f=1; i=1;の部分ってことですか?すみません。まだ「コマンドライン引数」というのがどういうものかよく分かっていないので教えて欲しいです。public static void main(String[]args)というのはプログラムでは必ず出てくるのですが、意味がよくわからずに使っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matobaa

2016/08/09 13:01

Javaの開発環境や実行環境には、なにをおつかいでしょうか? Eclipse, IntelliJ IDEA, Android studio, nitrous.io, codeanywhere, Codenvy, codeiq, paiza.io などなどなど。
prog1717nm

2016/08/09 13:12

Emacsとターミナルです
guest

回答5

0

例えばクラス名がTestだしたら
java Test
で実行します。
その時に、後ろにつける引数がコマンドライン引数です。
java Test aaa bbb ccc
と実行すると、
args[0]にはaaa
args[1]にはbbb
args[2]にはccc
は入ります。

そのため、同じソースでも引数に応じて実行内容を変えたりといろいろなことに使えます。

投稿2016/08/09 11:21

randr

総合スコア202

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラムを実行する際に、プログラム名以外にオプションパラメータを付けることができます。

bash

1# この場合、lsコマンドを実行して、「-l」「*.png」が引数になります 2# もちろん、Java製のlsがある環境はそうそうないとは思いますが 3ls -l *.png

Javaでは、このようにプログラム実行時に渡されたパラメータがString[] argsに入ります。

投稿2016/08/09 11:16

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ngyuki

2016/08/09 13:57

その例だとシェルが展開するので *.png がそのまま引数にはならないのではないかと(windows とかそもそも .png がなければ別ですけど)
maisumakun

2016/08/09 14:31

確かにそうでしたね…ちょっとうっかりしていました。
guest

0

ベストアンサー

メソッドに渡すデータのことを一般に「引数」と呼びます。

public static void func(int a)

これは、「int型の a を引数に受け取る、funcという名のメソッド」という具合に表現します。

public static void main(String[] args)

これは、「String[]型の args を引数に受け取る、mainという名のメソッド」です。
つまり、引数=argsです。
なお、mainという名の関数は特別な存在で、実行時、一番最初に呼び出されます。
違う場合もあるようですが、とりあえずそう思っといてもらって問題無いです。

さて、今はコマンドラインの話しをしているのでコマンドラインからの実行を考えます。
通常、ターミナル上では、プログラムは以下のように実行します。
(「java factorial」がコマンド名、と思っといて下さい)

コマンド名 引数1 引数2
例) $ java factorial 1 10

この「引数1」「引数2」が、コマンドライン引数です。
コマンドライン(で実行するときにユーザが与える)引数。という意味です。

先ほど述べたとおり、実行時には最初にmainが呼び出されます。
「引数1」「引数2」はどこに格納されるのかというと、「args」の中に入ります。

つまり、コマンドライン引数は、main関数の引数に渡されるデータ、ということになります。
これが「main関数に渡される引数」=「コマンドライン引数」という言葉の意味です。


java

1public class Factorial { 2 public static void main(String[]args){ 3 int n,f,i; 4 n=5; 5 f=1; i=1; 6 while(i<=n) { 7 f=i*f; i=i+1; 8 } 9 System.out.println(f); 10 } 11}

余談ですが、これはargsを引数にうけとるmainというメソッドを持つ、Factorialというクラス。
n, f, i は「mainメソッドのローカル変数」などと言われます。

投稿2016/08/09 23:42

tnd-.-b

総合スコア247

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Java言語は、実行したクラスのmain(String[] args)関数が最初に呼ばれます。

他の方も回答をしていますが、

java Hello aaa bbb

とした場合は、
args[0] に "aaa"
args[1] に "bbb"
が設定されます。

投稿2016/08/09 12:51

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

コマンドライン引数とは、追加情報入りで実行する時にクラス名のあとにつける引数のことです。
例を出してみます。
例えば、コマンドライン引数に表示してほしいものを入れて表示してもらうプログラムを作ってみます。

java

1public class CmdLine{ 2 public static void main(String[] args){ 3 for(String str:args)//拡張for 4 System.out.println(str); 5 } 6}

例えば、

Bash

1Hello 2World

という結果がほしいなら、

Bash

1java CmdLine Hello World

として起動します。
用途

Bash

1cp {オプション} (directory:コピー元) (from:コピー先)

のようにコマンドプロンプトで入力するとファイルがコピーされるのを知っていますか?
これをjavaでも似たようなことができます。

  • コマンドライン引数にコピー元とコピー先を入力してもらいコピーするプログラム
  • 起動の仕方は`java Copy コピー元 コピー先

投稿2016/08/09 12:28

編集2016/08/09 22:41
sun-solar-arrow

総合スコア113

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問