前提
・クラス:Calculate
・フィールド:
①ClassNumber(クラスフィールド)
②instanceNumber(インスタンスフィールド)
・メソッド
①addNumber() フィールド①、②にそれぞれ1を加える
②substNumber() フィールド①、②からそれぞれ1を引く
発生している問題・エラーメッセージ
ソースコードでclassNumberとinstanceNumberの値が更新されるのがいまいち納得できません。
以前、javaの基本型変数は値渡し、参照型は参照の値渡しだということを学びました。
値渡しだから値は更新されないのではないでしょうか。
私の理解は以下の通りです。
①フィールドのclassNumberとinstanceNumberはメソッドのaddNumber()やsubstNumber()に値のみ渡している。
②そのため、メソッドで値が変更されようとも元のclassNumberやinstanceNumberには変更が反映されない。
しかし、実際にはメソッド内での値の変更が元のインスタンスにも反映されています。
この仕組みを教えて頂けるとありがたいです。
該当のソースコード
java
1package sitsumon0627_2; 2 3public class Calculate { 4 //フィールド 5 static int classNumber; 6 int instanceNumber; 7 8 //加算 9 public void addNumber() { 10 Calculate.classNumber++; 11 this.instanceNumber++; 12 } 13 14 //減産 15 public void substNumber() { 16 Calculate.classNumber--; 17 this.instanceNumber--; 18 } 19} 20
回答2件
あなたの回答
tips
プレビュー