Java使用區域性變數的一些要點

2021-07-08 11:00:03 字數 879 閱讀 3744

5. 盡量使用區域性變數

呼叫方法時傳遞的引數以及在呼叫中建立的臨時變數都儲存在棧(stack)中,速度較快。其他變數,如靜態變數、例項變數等,都在堆(heap)中建立,速度較慢。

6. 盡量處理好包裝型別和基本型別兩者的使用場所

雖然包裝型別和基本型別在使用過程中是可以相互轉換,但它們兩者所產生的記憶體區域是完全不同的,基本型別資料產生和處理都在棧中處理,包裝型別是物件,是在堆中產生例項。

在集合類物件,有物件方面需要的處理適用包裝型別,其他的處理提倡使用基本型別。

7. 慎用synchronized,盡量減小synchronize的方法

都知道,實現同步是要很大的系統開銷作為代價的,甚至可能造成死鎖,所以盡量避免無謂的同步控制。synchronize方法被呼叫時,直接會把當前物件鎖 了,在方法執行完之前其他執行緒無法呼叫當前物件的其他方法。所以synchronize的方法盡量小,並且應盡量使用方法同步代替**塊同步。

8. 盡量使用stringbuilder和stringbuffer進行字串連線

這個就不多講了。

9. 盡量不要使用finalize方法

實際上,將資源清理放在finalize方法中完成是非常不好的選擇,由於gc的工作量很大,尤其是**young代記憶體時,大都會引起應用程式暫停,所以再選擇使用finalize方法進行資源清理,會導致gc負擔更大,程式執行效率更差。

10. 盡量使用基本資料型別代替物件

string str = "hello"; 上面這種方式會建立乙個"hello"字串,而且jvm的字元快取池還會快取這個字串;

string str = new string("hello"); 此時程式除建立字串外,str所引用的string物件底層還包含乙個char陣列,這個char陣列依次存放了h,e,l,l,o

我們先定義一些區域性變數

static void main string args 這段看似和c 一模一樣的區域性變數定義 其實內部執行的方式有很大的差異。這些int,double不再是以往簡單的內建型別,而是c 資料型別的別名。我們看一下cts規定的,也就是c 所遵循的系統型別層次結構。如圖所示c 語言是單根的。也就是說所...

C 關於區域性變數的一些理解

最近在糾結乙個問題,把區域性變數加入到乙個全域性的鍊錶裡面去,在其他的地方獲取到這個變數值是否存在?區域性變數不是應該釋放了嗎?我個人有如下理解 其實不然,加入到鍊錶的時候其實是把變數的值複製乙份加到鍊錶裡面去的,區域性變數所申請的位址是釋放,如果變數是乙個類物件就會把這個類物件的值賦值到鍊錶裡面新...

關於全域性變數,區域性變數的一些看法!!!

1,全域性變數,和區域性變數的生存週期咋樣呢,儲存位置呢?2,假如全域性變數和區域性變數定義賦值都是一樣的,那麼printf函式裡呼叫變數會出現什麼結果?把區域性變數去掉呢?3,對於乙個c c 程式而言,全域性變數真的只是定義在所有函式之外就ok的嗎?假如某乙個全域性變數定義在最底部,那麼上面的那些...