• ベストアンサー

違いはなんですか?

public static void main(String[] args) と public static void main(String args[]) の違いは何ですか? おしえてください。宜しくお願いします。

  • upupu
  • お礼率20% (5/25)
  • Java
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

これは「argsの型は何?」というお話になるな。 実は、Javaでは配列は全てarrayクラスのサブクラスになる。つまり、argsは「String」型の「配列」ではなく、「Stringの配列」型の変数という事だ。具体例を示すと、 String[] s = new String[3]; // String[3]型のインスタンスが作られる s[0] = new String("aaa"); // String型のインスタンスが作られる s[1] = new String("bbb"); s[2] = new String("ccc"); これがどういう事かと言うと、1行目ではString[3]型のインスタンスが作成されるが、この時点ではStringのインスタンスは一つも存在しない。  君の質問文にある下の方の行をコンパイルしてもバイトコードは上の行のものになる。「Stringの配列」型の変数argsが出来るんだな。実際Javaに「変数の配列」という概念はない。じゃあなぜこんな書き方も許されるかというと、CやC++からの移行に際して、Cに慣れた人に対する配慮だと思われる。でも実際はそれが逆にこういう混乱を招く結果になったと私は思うね。 String[] s = new String[3]; これはC++風に言うとString型へのポインタを3つ含むインスタンスを作ったという事になる。 (CやC++が卓越であればあるほど)とても難しい概念だと思うので納得がいくまでいくらでも質問して良いよ。細かいことでもお答えしますんで。

upupu
質問者

お礼

詳しい説明ありがとうございます。 質問の続きなのですが、 (String ar[]) というのも同じなのでしょうか?? 宜しくお願いします。

その他の回答 (2)

  • davosuke
  • ベストアンサー率61% (34/55)
回答No.3

ANo.2 に対しての回答。 main(String args[]) main(String ar[])も同じものです。 ただ、mainメソッド内で使用する実行クラスのパラメータを格納する配列の変数名がargからarに変わります。

  • davosuke
  • ベストアンサー率61% (34/55)
回答No.1

違いは特にありません。ただのStringオブジェクトの配列です。開発システムではプログラミング規約等でどちらで統一するか、決定する要素の一つですね。 好きなほうでコーディングしてよろしいですよ。

関連するQ&A

  • 違いを教えてください。

    JAVA初心者です。勉強しててわからない事がたくさん・・・ まず、public static void main(String args[])と    public static void main(String []args) は同じ意味なのでしょうか?そもそも(String args[])の意味がよくわかりません・・・。argsってなんて読んだらいいのでしょうか? あと、extends継承してクラスを使うのと、importでクラスを使うのって意味は同じですか? 最後に、abstract抽象も使い方がよくわかりません。 教えてください!!

    • ベストアンサー
    • Java
  • javaのmainメソッド

    public static void main(String args[]) と public static void main(String[] args) の違いを説明してくれないですか? 小さい質問ですいませんが、回答よろしくおねがいします!

  • public static void main(String args

    public static void main(String args[]) { と public static void main(String[] args) { は何が違います?

    • ベストアンサー
    • Java
  • byteについて

    public static void hoge(byte b) { } public static void main (String args[]) { hoge(1); } とするとエラーになります。 でも、 public static void hoge(byte b) { } public static void main (String args[]) { byte b=1; hoge(b); } にするとエラーになりません。 なぜなんでしょうか?

    • ベストアンサー
    • Java
  • javaの基本的な質問

    java初心者です。 サンプルプログラム等の宣言部分が下記の2通りで記載されていることがありますが、 カギ括弧の位置が違うこの2つは何か意味があるのでしょうか? それとも同じ意味ですか? ----------------------------------------- public static void main (String args[]) public static void main (String[] args) ----------------------------------------- よろしくお願いします。

    • ベストアンサー
    • Java
  • あれ?

    すいません。 長い間、 疑問に思ってたことがあるんですけれども、 (1) import javax.swing.*; class Sample {  public static void main (String args[])  {   ........   Aメソッド()  } } (2) import javax.swing.*; class Sample extends aiueo {   public static void main (String args[])  {   ........   Aメソッド()  } } (3) class Sample extends aiueo {  public static void main (String args[])  {    ........   Aメソッド()  } } の違いが、 考えれば考えるほどわからなくなってきました。 パッケージと継承の関係について、 どうやら理解できていないみたいです。 どなたか分かりやすく教えてください。 よろしくお願いします。 (注) Aメソッドはaiueoクラスのメソッドとし、 aiueoクラスはjavax.swingパッケージに入っているものとします。

    • ベストアンサー
    • Java
  • 『args[]』とは?

    ご質問させて頂きます。 public static void main(String args[]){ の 『args[]』はどのような意味なんですか? ご教授して頂けたら幸いです。

    • ベストアンサー
    • Java
  • コンパイル時のエラー。

    いつも大変お世話になりありがとうございます。 public static void main(String[] args)は何の意味があるのですか? http://www.task-notes.com/entry/20150930/1443582000 などを見てもイマイチ納得がいきません。 下記のプログラムでは public static void main(String[] args)がないためにエラーになりました。 解らないため適当な箇所に付け足したら、また異なったエラーになりました。 ;を付け足すとまた別のエラーが出ます。 ご多忙中恐れ入ります。 アドバイスのほど宜しくお願い申し上げます。 class Hero { public static void main(String[] args) private int point; Hero(int p) {point = p; } int getPoint() { return point; } void addPoint(int p) { point += p; } } コンパイルエラー C:\JAVA>javac Hero.java Hero.java:3: エラー: ';'がありません public static void main(String[] args) ^ エラー1個

  • メインメソッドの記述について

    メインメソッドを記述する際に、   public static void main(String[] args){     ~~~~~~~~~~~~~   } と書くと思いますが、なぜpublicを付けなければならないのでしょうか? 簡単に考えるために、1つのクラスのみで実行してみたのですがやはりpublicをつけないとエラーになってしまします。 1つのクラスしかないので、どこからも参照されないからpublicでなくても良いと思ったのですが・・・ ちなみに以下の様なとても簡単なもので考えました。 class E_1{ static void main(String[] args){ System.out.println("実験です"); } }

  • public static void main (String args[])

    基本すぎて申し訳ありませんが、 public static void main (String args[])とはどういう意味を持っていますか? 教えてください。。

    • ベストアンサー
    • Java

専門家に質問してみよう