《Effective Java》讀書筆記之一

來源:互聯網
上載者:User

      終於翻開這本James都稱讚的java經典書籍了,發現比一般的英語書籍要難懂一些。但是裡面的Item都是非常實用的,是java程式員應該理解的。

Creating and Destroying Object

Item 1:考慮用靜態Factory 方法替代構造器
例如:public static Boolean valueOf(boolean b)
            {
                  return (b?Boolean.TRUE:Boolean.FALSE);
            }
這樣的好處是方法有名字,並且它可以複用對象,不像構造器每次調用都產生新的對象。其次它還可以返回傳回型別的子類。不好的地方是如果沒有public or protected構造器的類將不能被繼承。還有就是靜態Factory 方法的名字和其他的靜態方法名字不容易區分。

Item 2:通過添加私人構造器來加強單例屬性(singletom property)
例如:public class Hello
            {
                  private static final Hello Instance = new Hell();

                  private Hello()
                  {}
                    
                    public static Hello getInstance()
                      {
                     return Instance;

                     }
            }
這個私人構造器只能在內部被使用,確保了單例模式!
Item 3:避免建立重複的對象
對不可修改的對象盡量進行複用,這樣效率和效能都會提高。例如如果迴圈100次String s = new String("hello")將建立100個對象 迴圈100次String s = "hello";則只建立了一個對象。很好的進行了複用。

Item 4:用私人構造器來避免被執行個體化

例如public UtilityClass
{
   private UtilityClass()
{}

///
}
通常那些工具類是這麼設計的

Item 5:消除絕對的對象引用

      雖然java中使用gc來管理記憶體,但是如果不注意的話也會產生“記憶體流失”。例如下面的程式
public class Stack
{
 private Object[] elements;
 private int size = 0;
 
 public Stack(int i)
 {
  this.elements = new Object[i]; 
 } 
 
 public void push(Object e)
 {
  ensure();
  elements[size++] = e; 
 }
 
 public Object pop()
 {
  if(size == 0)
  {
   //// 
  } 
  
  return elements[size--];
 }
 
 private void ensure()
 {
  //// 
 }
}
標記的地方存在著記憶體流失的問題,因為當他被彈出棧的時候,它也沒有成為可回收的垃圾對象,Stack維護著他們的絕對的引用。將不能更改。改進的方法是如下的寫法
 public Object pop()
 {
  if(size == 0)
  {
   //// 
  } 
  Object obj = elements[--size];
  elements[size] = null;
  
  return obj;
 }
 但是切忌不要濫用null。

Item 6:避免finalizers
記憶體回收行程是低線程層級啟動並執行且不能被強迫執行。推薦使用的方法類似於
InputStream is = null;

try
{
      is = /////;
}
finally
{
      is.close();
}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.