午后星期午

          2014年3月26日 #

          Java 單例模式詳解

               摘要: 概念:  java中單例模式是一種常見的設計模式,單例模式分三種:懶漢式單例、餓漢式單例、登記式單例三種。  單例模式有一下特點:  1、單例類只能有一個實例。  2、單例類必須自己自己創建自己的唯一實例。  3、單例類必須給所有其他對象提供這一實例。  單例模式確保某個類只有一個實例,而且自行實例化并向整個系統提供這個實例。在計算機系統中,線程池、緩存、日志對象、對話框、打印機、顯卡的驅動程序對...  閱讀全文

          posted @ 2014-03-27 01:20 午后星期午 閱讀(96) | 評論 (0)編輯 收藏

          值傳遞、引用傳遞的區別

          所謂值傳遞,就是說僅將對象的值傳遞給目標對象,就相當于copy;系統將為目標對象重新開辟一個完全相同的內存空間。
          所謂引用,就是說將對象在內存中的地址傳遞給目標對象,就相當于使目標對象和原始對象對應同一個內存存儲空間。此時,如果對目標對象進行修改,內存中的數據也會改變。
          值傳遞,例如:
          class TestT1 
          public static void main(String[] args) 
          int i = 5; 
          int j = 6; 
          System.out.println("before exchange i = "+i);//交換前
          exchange(i, j); 
          System.out.println("after exchange i = "+i);//交換后
          }
          public static void exchange(int a,int b) 
          int k;
          k = a;a = b; b = k; 
          程序的結果是5!!! 
          這說明,原始數據類型是按值傳遞的,這個按值傳遞也是指的是進行賦值時的行為。 
          Java語言明確說明取消了指針,因為指針往往是在帶來方便的同時也是導致代碼不安全的根源,同時也會使程序的變得非常復雜難以理解,但這只是在Java語言中沒有明確的指針定義,實質上每一個new語句返回的都是一個指針的引用。
          引用傳遞,例如:
          class TestT2
          public static void main(String[] args) 
          StringBuffer s= new StringBuffer("good"); 
          StringBuffer s2=s; 
          s2.append(" afternoon."); 
          System.out.println(s); 
          對象s和s2指向的是內存中的同一個地址因此指向的是同一個對象。 
          這里的意思是進行對象賦值操作是傳遞的是對象的引用,因此對象是按引用傳遞的。 
          程序運行的輸出是: 
          good afternoon. 
          這說明s2和s是同一個對象。
          總結: 
          大家都知道,在JAVA中變量有以下兩種:
          基本類型變量,包括boolean、byte、char、short、int、long、float、double。
          引用類型變量,包括類、接口、數組(基本類型數組和對象數組)。
          對于基本類型和基本類型變量被當作參數傳遞給方法時,是值傳遞。在方法實體中,無法給原變量重新賦值,也無法改變它的值。
          而對象作為參數,如果在方法中把對象作為參數,方法調用時,參數傳遞的是對象的引用,即在方法調用時,實際參數把對對象的引用傳遞給形式參數。這是實際參數與形式參數指向同一個地址,即同一個對象,方法執行時,對形式參數的改變實際上就是對實際參數的改變,這個結果在調用結束后被保留了下來。

          形參和實參有以下顯著的區別:
              1、形參不能離開方法。形參只有在方法內才會發生作用,也只有在方法中使用,不會在方法外可見。而實參可以再程序的任何地方都使用。
              2、形參代表一個合集,具有不確定性,而形參代表一個獨立事物,具有確定性(即使是為null)。也就是說,形參不能代表具體的對象,只能代表這些對象共同的屬性(比如超類、各種其他自定義屬性等等),而實參則是具體的對象(比如超類的實例)。
              3、形參的值在調用時根據調用者更改,實參則用自身的值更改形參的值(指針、引用皆在此列)

          posted @ 2014-03-26 22:29 午后星期午 閱讀(146) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 多伦县| 夏邑县| 宜宾市| 武强县| 雷山县| 西林县| 龙海市| 广水市| 甘孜| 阳江市| 扶绥县| 大方县| 滦平县| 安达市| 泗阳县| 潞城市| 涿鹿县| 水富县| 马鞍山市| 张家港市| 鄂伦春自治旗| 巨野县| 济阳县| 汝阳县| 佛学| 仪陇县| 定兴县| 绥江县| 庆安县| 资阳市| 花莲市| 洛阳市| 东兴市| 北票市| 峡江县| 阳谷县| 筠连县| 威远县| 普安县| 江口县| 红安县|