-1
で「新しい」呼び出しを呼び出すために、静的関数内で「新しい」呼び出しを呼び出すのは同じですか?静的関数の新機能は、インスタンスメソッドの静的関数とは異なる割り振りをしていますか?インスタンスメソッド
で「新しい」呼び出しを呼び出すために、静的関数内で「新しい」呼び出しを呼び出すのは同じですか?静的関数の新機能は、インスタンスメソッドの静的関数とは異なる割り振りをしていますか?インスタンスメソッド
いいえ、効果は同じです。静的メソッドスコープから非静的メソッドスコープへの割り当てには違いはありません。ヒープ上のスタックとC/C++のようにスタックを割り当てるようなことについて考えているなら、この違いはJavaではそれほど顕著ではなく、どこからnew
を呼び出しても影響を受けません。デフォルトでは、new
を使用するたびに、最新のJVM(Java6以上)の例外を除いて、escape analysis(スレッドであればスタックにオブジェクトを割り当てる可能性があります。ローカルスコープが限定されています)。しかし、ローカルプリミティブ変数と参照は常にスタックにプッシュされます。