在修改bug時,說是函式的引數最好不要在函式內部重新使用。上滿呼叫函式後輸出foo.add是42,但a的值仍然是40,有些疑惑?
解決:在呼叫時,a的記憶體分配在堆中,首先是a = a +b入棧,在棧中新建a變數,等號後面a的值是從堆中呼叫,計算後把值42放在棧中,所有foo.add返回時42,因為a是基本型別,所以a = a + b不會改變堆記憶體中a的值,a的值仍然是40.如果說上面的引數a是乙個物件的話,那麼a在堆中的值是會改變的。因為物件在入棧是入的是位址,所以進行操作後屬性的改變會儲存到堆中。
Java中的變數
在程式中,我們常常需要儲存一些動態的資料,或者對這些資料進行動態的操作,所以就產生了變數。單個變數的宣告要按照以下形式 資料型別 變數名 資料型別 變數名 變數值 這兩種方法的區別是第一種沒有賦初始值,而第二種方法宣告變數的時候同時賦初始值,推薦使用第二種方法,因為沒有賦值的變數參與操作可能會引起未...
java 繼承中成員變數和方法的問題
public class t1 public void test2 public class t2extends t1 public static void main string args 首先明確 子類定義了和父類相同的變數,不會覆蓋變數值,也就是說,各是各的。t1 test new t2 這是...
JAVA 變數作用域的問題
變數作用域的問題 public string getanswer catch exception e return myanswer 這個方法總是報錯,按以前的思路,myanawer應已賦值了,怎會是還沒賦值?原來,這就是變數的作用域的問題,我把它改為 public string getanswer...