自分の復習、アウトプットでやっているが、話の枕を考える時間のほうが長いのはなぜだろう。
自分は落語が好きなのだが、本題に入る前の話が好きだったりもする。
存命ではないが、六代目桂文治は好きな落語家の一人。
立川談志の枕なんかは脱線しすぎて何の話か分からないこともあったそうで。
だから本題より面白かったりもする。
去年、KISSのライブに行ったけど、本編より会場について始まるまでの高揚感が一番楽しかったりする。
今回も例外なく前置きが長いが、どうも書きたくなってしまう性分のようで。
これも何かのアウトプットになっているのだろうと書きながら思う。
今回は少し息抜きでちょっとしたお遊びをする。(理解を深める復習には変わりない。)
お品書き
- コマンドラインからのデータ入力
- CmdLineのSample
- 試してみよう
◆コマンドラインからのデータ入力
javaコマンド実行時にプログラムにデータを渡せる。
どゆこと?
今まではjava クラス名
これだけをコマンドラインに入力していた。
C:\Java\1>java HelloWorld
C:\Java\1>
こういうやつ
ところがどっこい
データをプログラムに渡して動かすことができる。
>java CmdLine Hello Hello
例えば上記のHello Hello
はどこにいくんだ?となる。
これは
public static void main(String[] args){ }
のargs
に入る。
String[] args
は引数という意味で、文字列型の配列argsを作るという記述だから。
そのため、配列args
にHelloとHelloが入った状態でプログラムを動かせるということ。
へぇぇ。
◆CmdLineのSample
args
も前回まで復習していた配列なので0起算で記述します。
class CmdLine{
public static void main(String[] args){
System.out.println("args[0]:" + args[0]);
System.out.println("args[1]:" + args[1]);
System.out.println("args.length:" + args.length); //argsの要素数の取得
}
}
試してみよう。
まずはデータを入力しないパターン
C:\Java\1>java CmdLine
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at CmdLine.main(CmdLine.java:3)
C:\Java\1>
Exception(例外)エラーが出ました。
ArrayIndexOutOfBoundsException
は結構あるあるエラー。Array
は配列、Index
は要素の番号、OutOfBounds
は領域外の例外。
どゆこと?というと、Index 0 out of bounds for length 0
、つまり要素にデータが何もないよと怒られています。
じゃ次。
わかったわかった。データを入れたら良いのね。
特別に3つ入れてあげるよ。
C:\Java\1>java CmdLine Hello Hello aaa
args[0]:Hello
args[1]:Hello
args.length:3
C:\Java\1>
特にエラーが起こることはない。
args.length
で要素数も3つ取れている。
ただ、データ型の[ ]は2つしかないので3つ目のデータは表示されない。
System.out.println("args[2]:" + args[2]);
を作れば3つ目も表示される。
じゃ次。
プログラム通りに要素数を2つ。
言われたこと以外しないパターン。
C:\Java\1>java CmdLine Hello Hello
args[0]:Hello
args[1]:Hello
args.length:2
C:\Java\1>
特にいうことなし。
ですよね。
さて、また次からはしっかり基礎復習をしよう。