- ベストアンサー
Javaコンパイル実行時のエラーについて
- Javaのコンパイルは成功したが、実行時にエラーメッセージが表示される理由について説明します。
- Javaのコンパイル時には問題なく成功したが、実行時に「java.lang.ArrayIndexOutOfBoundsException: 0」というエラーが発生する問題について解説します。
- Javaのコンパイルは正常に行われますが、実行時に「java.lang.ArrayIndexOutOfBoundsException: 0」というエラーメッセージが表示される原因についてご説明します。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
>回答No.8 amanojaku1 Javaの場合、オブジェクトは全て「参照型」(ポインタによって「参照」されている)です。 Javaの場合、配列も文字列もオブジェクトなので「参照型」(ポインタによって「参照」されている)です。 プリミティブ型について下記を参照して下さい。 【Java】基本データ型(プリミティブ型)について https://nobuo-create.net/primitive/
その他の回答 (8)
- amanojaku1
- ベストアンサー率54% (265/488)
- amanojaku1
- ベストアンサー率54% (265/488)
>ポインタの場合の「参照」とは、ポインタによる「参照」です、意味が違うので注意して下さい。 ポインタの場合の「参照」とは、ポインタによる「参照」です。 配列の"要素"を「参照」するのとは意味が違うので注意して下さい。
お礼
ご回答誠にありがとうございました。 ポインタは難しいです。
- amanojaku1
- ベストアンサー率54% (265/488)
>ポインタの場合の「参照」とは、ポインタによる「参照」です(何か言葉で言うと意味不明かもしれませんが)。 ポインタの場合の「参照」とは、ポインタによる「参照」です、意味が違うので注意して下さい。
- amanojaku1
- ベストアンサー率54% (265/488)
>配列要素の場合では「参照」とは棚の区画の中を見ると言うイメージです 配列の"要素"を「参照」するとは棚の区画の中を見ると言うイメージです Javaの配列自体が「参照型」(ポインタによって「参照」されている)ですが、意味が違うので注意して下さい。
お礼
ご回答誠にありがとうございます。
- amanojaku1
- ベストアンサー率54% (265/488)
配列は棚をイメージして下さい。 添付ファイルの向かって左が「1次元配列」、添付ファイルの向かって右が「2次元配列」と言うイメージです。 配列要素の場合では「参照」とは棚の区画の中を見ると言うイメージです、(「args[0]」とは「args」配列の「0」番目の要素ですので)、「args」と言う名前の棚の「0」番目の区画と言うイメージです。 ポインタの場合の「参照」とは、ポインタによる「参照」です(何か言葉で言うと意味不明かもしれませんが)。 質問の場合は、棚の作成に失敗して、何も入れられない棚を作ってしまったらめに、棚の「0」番目の区画を「参照」しようとしたら、それが存在しないのでエラーになったと言うことです。
お礼
解りやすいご説明、どうもありがとうございました。
- wormhole
- ベストアンサー率28% (1626/5665)
>C:\WORK>java test16 テスト1 テスト2 >とはどういったケースに使うのですか? #2の方もいわれていますけどtest16が何をするプログラムなのか把握していますか? あなたが自分で作ったわけではなく何かの本やwebサイトに書いてあったプログラムでしょうから、その説明があったと思うのですけど。 書いてあるのを何も考えずにタイプしてコンパイル・実行して「動いたー」「何かエラーが出たー」とかやってる状態だといつまでたっても自分でプログラム組めるようになんてなりませんよ。
お礼
おっしゃる通りですね。 モット、頭を使います。
- Kaneyan-R
- ベストアンサー率42% (1370/3194)
根本的に「何をするためのプログラムか」と言うことが理解できていないと思われます。 何をするプログラムかわかっていないから、どうやったら動くかもわからないのです。 何をするプログラムかわからないままプログラムを覚えても、何もできないプログラムしか覚えられませんよ。 掲題のプログラムでは、mainに引数として文字列配列「args」が設定されています。 ですから、プログラムの実行には引数である文字列が必ず必要になりますが、あなたは実行時に引数を全く与えていません。エラーが出るのは当然です。
お礼
おっしゃる通りですね。 モット、頭を使います。
- creamcheese
- ベストアンサー率38% (66/172)
args[0] ・・・・・argsの1番目 args[1] ・・・・・argsの2番目 という意味です。 C:\WORK>java test16 テスト1 テスト2 とやれば、 args[0] ・・・・・テスト1 args[1] ・・・・・テスト2 となりますが、 C:\WORK>java test16 とやれば、 args[0] ・・・・・無し args[1] ・・・・・無し となります。 無いものを見ようとすると(参照しようとすると)、エラー(例外)になります。 無いものを見ようとしているのは、 args[0].length() のところ(5行目)です。
お礼
ご回答誠にありがとうございました。 C:\WORK>java test16 テスト1 テスト2 とはどういったケースに使うのですか?
お礼
お陰様で「参照の意味」が少しだけ解りました。