Javaでpublic static void
はどういう意味ですか?
私は学習中です。私がpublic static void
から取り組んでいる本の中のすべての例では、使用または作成されているどのメソッドよりも前に来ています。これは何を意味するのでしょうか?
それは3つの全く異なるものです:
public
は、メソッドが可視であり、他のタイプの他のオブジェクトから呼び出すことができることを意味します。他の選択肢はprivate
、protected
、package
およびpackage-private
です。詳しくは ここ を参照してください。
static
は、メソッドがそのクラスの特定のインスタンス(オブジェクト)ではなく、そのクラスに関連付けられていることを意味します。つまり、クラスのオブジェクトを作成せずに静的メソッドを呼び出すことができます。
void
は、メソッドに戻り値がないことを意味します。メソッドがint
を返した場合は、int
の代わりにvoid
を書くことになります。
これら3つすべての組み合わせは、ほとんどのチュートリアルに含まれるmain
メソッドで最もよく見られます。
3つの単語は直交する意味を持ちます。
public
は、そのメソッドが他のパッケージのクラスから見えるようになることを意味します。
static
は、メソッドが特定のインスタンスにアタッチされておらず、 "this
"がないことを意味します。多かれ少なかれ機能です。
void
は戻り型です。 「このメソッドは何も返さない」という意味です。
publicキーワードは、プログラマがクラスメンバーの可視性を制御することを可能にするアクセス指定子です。クラスメンバの前にpublicがある場合、そのメンバは宣言されているクラス外のコードによってアクセスされる可能性があります。 (publicの反対はprivateです。これはメンバーがそのクラスの外で定義されたコードによって使用されるのを防ぎます。)
この場合、main( )
は、プログラムの起動時にクラス外のコードによって呼び出される必要があるため、publicとして宣言する必要があります。
キーワードstaticを使用すると、クラスの特定のインスタンスをインスタンス化しなくてもmain( )
を呼び出すことができます。 main( )
はオブジェクトが作成される前にJavaインタプリタによって呼び出されるので、これは必要です。
キーワードvoidは単にmain( )
が値を返さないことをコンパイラに伝えます。ご覧のとおり、メソッドも値を返すことがあります。
だということだ:
public
- どこからでも呼び出すことができますstatic
- オブジェクトの状態を持たないので、オブジェクトをインスタンス化せずに呼び出すことができますvoid
- 何も返しません返品がないということはそれほど多くは行っていないことを意味すると思いますが、たとえばデータベースに保存されているかもしれません。
それは3つのことを意味します。
最初のpublic
は、他のどのオブジェクトからもアクセスできることを意味します。
static
は、関数が呼び出される前に、それが存在するクラスを最初にインスタンス化する必要がないことを意味します。
void
は、関数が値を返さないことを意味します。
あなたはただ学んでいるだけなので、クラスについて学ぶまで最初の2つについてあまり心配しないでください、そして3番目はあなたが(main以外の)関数を書き始めるまであまり問題にならないでしょう。
プログラミングを学ぶときに私が得た、そして私があなたに伝える最良のアドバイスは、あなたがすぐに理解できない小さな詳細について心配することではありません。ファンダメンタルズの概要を広く把握してから、戻って詳細を心配してください。その理由は、あなたが最初に他のものの束についてあなたに教えることなしには実際にはうまく説明され得ないいくつかのこと(public static void
のような)を使わなければならないということです。それで、しばらくの間、それがそれが行われている方法であることをちょうど受け入れて、そして進んでください。あなたはまもなくそれらを理解するでしょう。
典型的な最上位クラスを考えます。トップレベルで使用できるのはpublicおよびno modifierのアクセス修飾子だけです。そのため、publicが表示されるか、アクセス修飾子がまったく表示されません。
トップレベルで実際のオブジェクトを作成する必要がないかもしれないので `static`が使われます(しかし時々あなたはそうすることを望みます/あなたはいつもstaticを見たり/使うことができないかもしれません。これもトップレベルの典型的なものです。)
void
が使用されるのは、通常最上位(クラス)から値を返すことはないからです。 (NULL
以外の値を返したい場合があるので、特に、値を代入している最上位レベルでオブジェクトを宣言して初期化した場合は、常にvoidが使用されるとは限りません)。
免責事項私は初心者なので、この答えが間違っている場合は絶対にハングしないでください。私は技術開発者ではなく開発者です。コーディングは私の趣味です。また、私は建設的な批判や学びが大好きなので、間違いを指摘してください。
Public
- クラス(プログラム)が他のクラスで使用できることを意味します。
Static
- クラスを作成します。変数やメソッドにも適用でき、クラスの特定のインスタンスに対してローカルではなく、クラスのメソッドや変数にすることができます。
Void
- これは、クラスが処理を完了したときに積が返されないことを意味します。メインクラスに戻り値を提供するヘルパークラスとこれを比較してください。これらは関数のように動作します。これらは宣言にはありません。
public
は、クラス/オブジェクト内、またはパッケージやクラスの外部のどこからでもクラスにアクセスできることを意味します。static
は、ステートメントのブロックが1回だけ使用された定数を意味しますvoid
は戻り型がないことを意味しますstatic
name__は、メソッドがそのクラスの特定のインスタンス(オブジェクト)ではなく、そのクラスに関連付けられていることを意味します。つまり、クラスのオブジェクトを作成せずに静的メソッドを呼び出すことができます。 static
name__キーワードを使用するため、最初にmain()
を呼び出す必要があります。static
name__は、インスタンス化するオブジェクトを必要としません。したがって、main( )
は、オブジェクトが作成される前にJavaインタプリタによって呼び出されます。