2

Java IO ストリームを使用すると、オブジェクトを他のオブジェクトのコンストラクターとしてのみ使用することがよくあります。私は、この見通しの記憶への影響に興味があります。たとえば、同じことを行うこれら 2 つのステートメントでは、メモリ割り当てはどのように異なるのでしょうか?

FileInputStream inputFile = new FileInputStream("filepath");
Scanner inStream = new Scanner(inputFile);

Scanner inStream = new Scanner(new FileInputStream("filepath"));
4

3 に答える 3

4

最初のものは、現在のスタック フレームに名前付き変数を割り当てます。ヒープ上では、違いはありません。または、そうであってはなりませんが、ルールが守られている限り、VM はもちろん、なんらかの方法で自由にコードを最適化できます。

于 2012-06-19T19:12:05.187 に答える
2

違いはありません。どちらも同じです。

于 2012-06-19T19:09:45.153 に答える
0

最初の例では、JVM は FileInputStream の参照を保持しますが、2 番目の方法では、JVM は、ステートメントの実行後にガベージ コレクションの準備ができている参照されていないオブジェクトを作成します。

于 2012-06-19T20:08:59.023 に答える