質問
編集-この質問のための私の悪い。ここでは私の最新の質問:
その後は同等の速度やメモリの割り当て:
int b;
for (int i = 0; i < 1000; i++)
b = i;
や
for (int i = 0; i < 1000; i++)
int b = i;
解決
いいえ、それはないだろう。
あなたはコンストラクタが完了した後に最後の値(999)を手に入れることができることに終わる。 - 。あなたが千の異なる値が割り当てられている一つの変数を持っている最初のケースであなたは、本質的に無操作方法1000回を呼んでいる第2のケースで
。第二の方法は、何の副作用を持っていないし、それは無用ですので、戻り値はありません。最初の例では、インスタンス変数は、オブジェクトの一部であるのに対し、ローカル変数のみように住んで、メソッド呼び出しの期間中に「存在する」。
これは、プリミティブに限定されないこと注 - 他のタイプがあまりにも同じように振る舞うでしょう。
。他のヒント
- そうです。いずれもまったく役に立たないので
- No.インスタンスのサイズクラス1より大きいインスタンスのサイズクラス2により、会員に変更します。
その答えようということは"と等しい"=)
No.
- に
Class1
変数a
の分野では、すべてのメソッドのクラスです。 - に
Class2
の場合はこの限りではありません:a
はローカル変数の方法assign
.後assign
が完了すると、価値のa
は破棄されます。
いいえ、一つのインスタンス変数a
(クラス1)を有し、一方はいない。
最初のインスタンスでは、すでにintとしてBを宣言したし、その値がたびにループが実行する更新されます。ループが実行するたびに、第二に、bが宣言され、iの値に初期化します。私がいない、100%確信しているが、私は後者の場合は、より多くのメモリ集約的であると思いますが、私は速度差が顕著になるだろうとは思いません。
これの価値は、任意のコンパイラの価値はその塩、と私はしっかりとJITは塩の価値がたくさんあることを信じていることを指摘し、ちょうど第二の場合にはONCE「B」のために確保スペースを設定します、すなわち、「宣言」段階では意味がありませんます。
あなたはこのアウトを試してみましたか?それも、コンパイルされません!
for (int i = 0; i < 1000; i++)
int b = i;
コンパイラからのエラーメッセージ:
Example.java:4: '.class' expected
int b = i;
^
Example.java:4: not a statement
int b = i;
^
Example.java:4: illegal start of expression
int b = i;
^
ループの本体は、少なくとも一つの文が含まれている必要があります。ただ、変数の宣言とループは無効であるので、変数の宣言は、ステートメントではありません。
所属していません StackOverflow