2011-02-07 29 views
6

上記の文では、String配列の代わりにint配列を使用できますか?かっこ内に何も入れていない場合、つまり空のかっこを使用するとどうなりますか?java基本的な基本的な質問

答えて

2

Int arrayの意味はわかりませんが、できません。メソッドシグネチャは、public static void main(String[] args)と完全に一致する必要があります。変更できるのは引数の名前だけです。メソッドの名前、引数の型、可視性(publicとprivateなど)は、ランタイムがメソッド自体を見つけるために使用するものです。そのシグネチャに準拠していない場合は、エントリポイントメソッドではないため、アプリケーションの起動時に呼び出されることはありません。

しかし、あなたが示唆していることは問題なくコンパイルされることに注意してください。アプリケーションを実行しようとするまで、問題は発生しません。

+0

Int配列では、整数の配列を意味していました。 – pradeep

+0

@rajivpradeep、私はそれがあなたが意味するものだと思ったが、そうではありません。これはString []でなければなりません。あなたがそれについて考えるときそれは理にかなっています。パラメータ配列はシェルによって提供され、文字列をintに変換する方法はわかりません。それが理解できるのはストリングだけです。 int配列が必要な場合は、Integer.parseInt()を使用してStringからIntegerに変換する必要があります –

+0

urの答えにchrisしてください。ありがとう – pradeep

1

コンパイラは受け付けますが、ランタイムはあなたを与えるだろうあなたが言及した変更でコードをコンパイルするとNoSuchMethodErrorが

5

、それが正常にコンパイルされます。実行しようとすると、JVMは引数としてString配列を持つmainメソッドをチェックします。引数としてString配列を持つメインメソッドがないので、コードは正常に実行されず、NoSuchMethodErrorがスローされます。

2

コードはコンパイルされますが実行されません。

文字列[]の理由は、人々がコマンドラインからパラメータを渡せるようにするためです。

0

主な方法は、Javaアプリケーションのエントリポイントです。あなたはjava language specificationを見れば、それは、具体的に述べ:

メソッドmainが は、公共の静的な、ボイド宣言されなければなりません。 は、 文字列の1つの引数を受け入れる必要があります。このメソッドは、渡されたString []型の配列は、アプリケーションを立ち上げどんなことで渡されている任意のコマンドライン引数が含まれているいずれかの

または

public static void main(String... args) 

として を宣言することができます。あなたはそれを読んで必要に応じて変換することができます。

0

あなたは、数字の代わりに文字列を取得

public static void main(String[] args) { 

    int[] numbers = new int[args.length]; 
    for(int i = 0; i < args.length; i++) numbers[i] = Integer.parseInt(args[i]); 

} 

は例外の処理このアプローチを使用することを探しているなら、読者のための運動です。

他の回答はあなたの他の問題の「理由」をよく説明しています。

3

いいえ、文字列配列の代わりにint配列を使用することはできません。引数intがオペレーティングシステムによって使用され、ユーザーが入力したコマンドライン引数の数を指定する整数値を渡すためです。次のパターンに従わなければなりません。

public static void main(String[] args) 

public static void main(String args[]) 
0

いいえ、それはクラスのテストで発見していない Mainメソッドのような実行時エラーを生成し、としてmainメソッドを定義してください。 のpublic static無効メイン(文字列[] args)

JAVAがより具体的ですメインメソッドのシグネチャについては、メソッドをクラス内の一般的なメソッドとみなします。

+0

これは他の回答と比べて何が異なっていますか? –