0
  1. static void main classは、どのクラスがそれを呼び出すかに関係なく、プログラムへの入り口ですか...それともその特定のクラスの入り口メソッドだけですか...
  2. これは一体どのように機能しますか?

    public class init{
        public static void main(String[] args){
            new init();
        }
    
        public init(){
            System.out.print("hi");
        }
    }
    

    プログラムがそれ自体のインスタンスを作成する方法がわかりません...なぜこれを実行できないのですか?

    public class init{
        public static void main(String[] args){
            start();
        }
    
        public static void start(){
            System.out.print("hi");
        }
    }
    
  3. 静的は、単純なパブリックに対して、いったい何をするのでしょうか。

4

6 に答える 6

1

staticpublicは異なるキーワードです。 アクセス修飾子publicです。 クラス全体のメンバーを指定するだけです。static

public static void mainこれは、JVMがプログラムの実行を開始する時点を認識できるようにするためです。1つのエントリポイントのみを選択し、他のエントリポイントがある場合は無視します。

どちらの方法でも機能しますが、結局は設計に帰着します。つまり、コンストラクターにメッセージを表示させますか、それともその責任を別のメソッドに委任しますか?また、そのメソッドも静的である必要はありません。あなたはそれをそのようにすることができます:

new init().start() ;

これがプログラミングが素晴らしく、そのようなPITAである理由です;)1つのことを成し遂げる方法はたくさんあります。

于 2012-10-19T23:25:52.640 に答える
1

1)mainは、Javaクラスを「実行」する方法です。プログラムは複数のクラスを持つことができ、それぞれに独自のがありmainます。実行するときは、実行するクラスを指定します。

2)それは可能ですが、通常はクラスよりもオブジェクトのインスタンスを処理する方が適切です。これを行う理由はさまざまです。

3)staticは、インスタンス変数/メソッドではなく、クラスレベルの変数/メソッドであることを意味します。それらは、クラス自体(たとえばSystem.outまたはインスタンス(null参照でさえ)で「オン」と呼ぶことができますが、それは貧弱な形式と見なされます。

于 2012-10-19T23:26:11.883 に答える
1

static void main classは、どのクラスがそれを呼び出すかに関係なく、プログラムへの入り口ですか...それともその特定のクラスの入り口メソッドだけですか?

mainこれは、C / C ++プログラムの機能と非常によく似た、プログラムを開始できるJVMを言う方法です。このメソッドを使用するクラスが複数ある場合は、どのクラスがプログラムの入り口になるかをJVMに指示する必要があります。

静的は、単純なパブリックに対して、いったい何をするのか

staticキーワードはメソッド/変数がクラスに属することを意味し、単にprivate / protected / public / defaultはメソッド/変数がクラスインスタンス(オブジェクト)に属することを意味します。

これは一体どのように機能しますか

initクラスのインスタンスを作成しています。Javaコードでそれを行うのは悪いことではありません。クラスコンストラクタでは、プログラムはHiコンソールに単語を出力します。

于 2012-10-19T23:27:17.227 に答える
0

うーん、まあ、あなたは2番目のことをすることができます。確かに、私はそれをコンパイルしただけで、実行され、次のように述べました。

hi>

静的は実際にはパブリックとは関係ありません。静的対動的です。パブリック対プライベートです。

読んでください:「static」キーワードはクラスで何をしますか?

ちなみに、shhh-プログラムを開始するためにstaticキーワードを持っている必要はありません。あなたただ言うことができます:

public void main(String[] args)

そして、ほとんどの場合、あなたは通り抜けますが、あなたの場合はそうではありません!

最初のものを削除すると、次のようになりstaticます。

java.lang.NullPointerExceptionエラー 。理由を理解する必要があります。だから、static void mainJavaを十分に理解するまで頑張ってください!

于 2012-10-19T23:24:29.537 に答える
0
  1. プログラムへの入り口

  2. クラスはそれ自体のインスタンスを作成します。これは、最終的には、System.out.printを実行するだけでなく、さらに多くのデータをカプセル化する必要がある場合があるためです。

  3. staticは、この場合、Classメソッドを定義します。つまり、そのクラスからインスタンス化されたオブジェクトではなく、クラスによって呼び出されるメソッドです。

于 2012-10-19T23:24:45.977 に答える
0

Javaのエントリポイントは常に指定されたmainメソッドです。init最初の例では、タイプ(クラス名はinit)の新しいオブジェクトを作成し
ます。initクラスのコンストラクターで、hiを書き込むように指示します。newキーワードを使用して新しいインスタンスを作成するように指示します。コンストラクターは、クラス名と一致するメソッドです。

2番目の例では、インスタンスは作成されません。starthiを出力するメソッドを呼び出します。init.start();静的メソッドは常にtype(class)を参照しますが、非静的メソッドは実行するために常にオブジェクト参照を必要とするため、作成すること もできます。
これを示すために、最初の例の修正バージョンを次に示します。

public class Init{
    public static void main(String[] args){
        Init i = new Init();
        i.goodBye();
    }

    public Init(){
        System.out.print("hi");
    }

    public void goodBye() {
        System.out.print("Good Bye");
    }
}
于 2012-10-19T23:32:17.560 に答える