- - PR -
staticについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-12-18 15:19
staticについて理解できないことがあるので、どなたかご教授お願いいたします。
下記の3つのサンプルクラスを作成しました。 (クラスの命名や、例外の握り潰しについては大目に見てやってください)
コマンドプロンプトを2つ立ち上げ、各々でAccountMainとAccountMain2を実行します。 > java AccountMain 200 > java AccountMain2 100 予想では、AccountMainが実行してからAccountMain2によってAccountクラスのsavingsクラス変数が書き換えられるため、 AccountMainの実行結果が、---------- 預金残高:10000 払い戻し料:200 Aさん預金残高:9800 Aさん預金残高:24900 AccountMain2の実行結果が、---------- 預金残高:25000 払い戻し料:100 Bさん預金残高:24900 Bさん預金残高:24900 になると思ったのですが、実際の結果は異なり以下のようになりました。 [AccountMainの実行結果]---------- 預金残高:10000 払い戻し料:200 Aさん預金残高:9800 Aさん預金残高:9800 [AccountMain2の実行結果]---------- 預金残高:25000 払い戻し料:100 Bさん預金残高:24900 Bさん預金残高:24900 クラス変数の考え方、またはコーディングの仕方が間違えていますでしょうか? 未熟な質問で申し訳ありませんが、ご教授よろしくお願いいたします。 | ||||
|
投稿日時: 2008-12-18 15:34
二つの jvm を立ち上げるとそれぞれ別々のプロセス、別々のメモリ空間で実行されます。
一方の vm の Account のフィールドを書き換えたからといって他の vm の static フィールドが書き換わるということはありません。 これはフィールドが static であるかどうかとは関係ありません。 | ||||
|
投稿日時: 2008-12-19 14:04
>山本 裕介さん
なるほど! 2つのjvmが起動され、プロセスが異なれば値が変わることはまずないですね。 助かりました。どうもありがとうございました |
1