Javaで「public static void」はどういう意味ですか?


149

public static voidJavaで何を意味しますか?

学習中です。この本のすべての例でpublic static voidは、使用または作成されているメソッドの前にいます。これは何を意味するのでしょうか?

回答:


230

それは3つのまったく異なるものです。

publicメソッドが可視であり、他のタイプの他のオブジェクトから呼び出すことができることを意味します。他の選択肢がありprivateprotectedpackagepackage-private。詳細はこちらをご覧ください。

staticメソッドがそのクラスの特定のインスタンス(オブジェクト)ではなく、クラスに関連付けられていることを意味します。つまり、クラスのオブジェクトを作成せずに静的メソッドを呼び出すことができます。

voidメソッドに戻り値がないことを意味します。メソッドがを返したint場合は、のint代わりに記述しますvoid

これら3つすべての組み合わせは、mainほとんどのチュートリアルに含まれるメソッドで最もよく見られます。


12
質問者はまだ学習中なので、これらのキーワードの順序も重要です。まず剤(publicstaticprivateその後、等)(戻り型voidこの場合)。
Pindatjuh

1
@markbyresわかりました、あなたが答えることを理解しています、メインメソッドは静的でなければならないことを知っていますが、なぜそれがパブリックであるのか分かりませんか?そのための特定の理由はありますか?
hardik 2012年

9
アプリケーションを起動するには、Javaランタイム環境がmainメソッドを呼び出す必要があります。それが私的だったときそれはそれをすることができませんでした。
フィリップ

44

3つの単語は直交する意味を持っています。

public メソッドが他のパッケージのクラスから見えることを意味します。

staticメソッドが特定のインスタンスに関連付けられておらず、 " this" がないことを意味します。それは多かれ少なかれ機能です。

void戻り型です。「このメソッドは何も返さない」という意味です。


22

公共のキーワードは、プログラマがクラスメンバーの可視性を制御することができますアクセス指定子です。クラスメンバーの前にパブリックが置かれている場合、そのメンバーには、クラスメンバーが宣言されているクラス外のコードからアクセスできます。(publicの反対はプライベートであり、メンバーはそのクラスの外部で定義されたコードで使用されません。)

この場合はmain( )、プログラムの起動時にクラス外のコードから呼び出す必要があるため、パブリックとして宣言する必要があります。

キーワードstaticを使用main( )すると、クラスの特定のインスタンスをインスタンス化せずに呼び出すことができます。main( )オブジェクトが作成される前にJavaインタープリターによって呼び出されるため、これは必要です。

キーワードvoidは、main( )値を返さないようコンパイラーに指示するだけです。ご覧のとおり、メソッドは値を返す場合もあります。


18

だということだ:

  • public -それはどこからでも呼び出すことができます
  • static -オブジェクトの状態がないため、オブジェクトをインスタンス化せずに呼び出すことができます
  • void -何も返さない

リターンがないということは、多くのことをしていないことを意味すると思いますが、たとえば、データベースに物事を保存しているかもしれません。


4

それは3つのことを意味します。

最初publicは、他のオブジェクトがアクセスできることを意味します。

static つまり、関数が呼び出される前に、そのクラスがインスタンス化されている必要はありません。

void 関数が値を返さないことを意味します。

学習しているだけなので、クラスについて学ぶまでは最初の2つについてはあまり気にしないでください。3つ目は、関数の作成を開始するまでそれほど重要ではありません(メイン以外)。

プログラミングを学ぶときに得た最高のアドバイスであり、私はあなたに伝えますが、すぐに理解できない細部について心配する必要はありません。基本事項の概要を理解してから、戻って詳細を心配してください。その理由はpublic static void、最初のプログラムではいくつかの他のもの(のような)を使用する必要があるためです。それで、今のところ、それがそれが行われた方法であることを受け入れて、次に進んでください。あなたはすぐにそれらを理解します。


3

典型的なトップレベルのクラスを考えます。トップレベルで使用できるのはパブリックアクセス修飾子のみで、修飾子は使用できないため、パブリックが表示されるか、アクセス修飾子がまったく表示されません。

トップレベルで実際のオブジェクトを作成する必要がない場合があるため、「静的」が使用されます(ただし、静的を常に表示/使用するとは限らない場合があります。静的を含めない理由は他にもあります。また、これはトップレベルの典型的なものです。)

void通常はトップレベル(クラス)から値を返すことはないため、これが使用されます。(ときどき、NULLそうでない場合はvoidが常に使用されるとは限りません。特に、値を割り当てる最上位レベルでオブジェクトを宣言して初期化した場合はそうではありません)。

免責事項: 私は初心者ですので、この答えがどうしても間違っている場合は、私を絞首刑にしないでください。私は日々、開発者ではなく技術採用担当者です。コーディングは私の趣味です。また、私は常に建設的な批判を受け入れ、学ぶことを愛していますので、間違いがあれば遠慮なく指摘してください。


2
  • public クラス/オブジェクトのどこからでも、パッケージやクラスの外からでもクラスにアクセスできることを意味します
  • static ステートメントのブロックが1回だけ使用された定数を意味します
  • void 戻り値型がないことを意味します

6
この質問は適切にカバーされています。おそらく、重複する情報で古い質問に答えるのではなく、新しい質問に答えてみてください。ありがとう。
Kev

象について説明するようなものです。人々はそれが彼の立場に依存してそれを説明しようとします。私は上記のすべての答えに満足していますが、「Javaで本を購入する」と言うのはどうでしょうか。
Sulung Nugroho 2017

2

Public -クラス(プログラム)が他のクラスで使用できることを意味します。

Static-クラスを作成します。変数とメソッドにも適用でき、それらをクラスの特定のインスタンスにローカルなだけでなく、クラスのメソッド/変数にします。

Void-これは、クラスが処理を完了しても製品が返されないことを意味します。これを、メインクラスに戻り値を提供するヘルパークラスと比較してください。これらは関数のように動作します。これらの宣言には無効はありません。


0

staticメソッドがそのクラスの特定のインスタンス(オブジェクト)ではなく、クラスに関連付けられていることを意味します。つまり、クラスのオブジェクトを作成せずに静的メソッドを呼び出すことができます。staticキーワードを使用するためmain()、最初に呼び出されるメソッドです。 staticインスタンス化するオブジェクトは必要ありません...したがって、main( )オブジェクトが作成される前にJavaインタープリターによって呼び出されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.