黑馬程序員<高新技術一>

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ----------------------

靜態導入:

import語句可以導入一個類或某個包中的所有類

import static語句導入一個類中的某個靜態方法或所有靜態方法

語法舉例:

import static java.lang.Math.max;

import static java.lang.Math.*;

當導入靜態方法後,可以不使用類名調用方法,如:

System.out.println(max(3,6));

這是java 1.5版本出現的新特性,JDK要使用1.5以上版本。


-------------------------------------------------------------------------------

可變參數的方法:

當我們對同一個方法所傳入的參數個數不確定時,以前要使用重載的方式寫多個方法,而1.5之後,可以使用

可變參數來定義一個方法即可。如:

System.out.println(countScore(2,3,5));

System.out.println(countScore(1,2,3,5));      

就需要一個可變參數的countScore方法來實現。


可變參數的特點:

1、只能出現在參數列表的最後;

2、...位於變量類型和變量名之間,前後有無空格都可以;

3、調用可變參數的方法時,編譯器爲該可變參數隱含創建一個數組,在方法體中以數組的形式訪問可變參數。

Java代碼  

  1. publicstaticint add(int x,int ...args) {  

  2. int sum = x;  

  3. for(int i=0;i<args.length;i++) {  

  4.            sum += args[i];  

  5.        }  

  6. return sum;  

  7.    }  


--------------------------------------------------------------------------------------------------------------------------

增強for循環:

格式:

for ( type 變量名:集合變量名 )  { … }

注意事項:

1、迭代變量必須在( )中定義!

2、集合變量可以是數組或實現了Iterable接口的集合類。

如在可變參數中的例子:

Java代碼  

  1. publicstaticint add(int x,int ...args) {  

  2. int sum = x;  

  3. for(int arg : args) {  

  4.                sum += args[i];  

  5.            }  

  6. return sum;  

  7.        }  


--------------------------------------------------------------------------------------------

基本數據類型的自動拆箱裝箱:

自動裝箱:

Integer num1 = 12;

將int類型的12自動裝箱爲一個Integer對象。

自動拆箱:

System.out.println(num1 + 12);

將Integer類型的num1拆箱爲一個int類型再與12進行運算。


---------------------------------------------------------------------------------

享元設計模式:

Integer i1 = 13

Integer i2 = 13

System.out.print(i1 == i2);//返回的是true


Integer i1 = 137

Integer i2 = 137

System.out.print(i1 == i2);//返回的是false

在自動裝箱過程中,如果賦值大小在一個字節之內,-128-127之間的數字,一旦被裝箱成一個對象,就會

放入緩存中,如果再有相同的的賦值動作,則它們指向同一個裝箱的對象。

這是一種設計模式:享元設計模式。


----------------------------------------------------------------------------------

枚舉:

枚舉就相當於一個類,其中也可以定義構造方法、成員變量、普通方法和抽象方法。

枚舉元素必須位於枚舉體中的最開始部分,枚舉元素列表的後要有分號與其他成員分隔。把枚舉中的成員方

法或變量等放在枚舉元素的前面,編譯器報告錯誤。

枚舉只有一個成員時,就可以作爲一種單例的實現方式。

帶構造方法的枚舉:

1、構造方法必須定義成私有的 。

2、枚舉元素MON和MON()的效果一樣,都是調用默認的構造方法。

帶方法的枚舉:

定義枚舉TrafficLamp

實現普通的next方法

實現抽象的next方法:每個元素分別是由枚舉類的子類來生成的實例對象,這些子類採用類似內部類的方式進行定義。

增加表示時間的構造方法

Java代碼  

  1. publicclass EnumDemo {  


  2. publicstaticvoid main(String[] args) {  


  3.        WeekDay weekDay = WeekDay.FRI;  


  4.        System.out.println(weekDay);  

  5.        System.out.println(weekDay.name());//打印這個對象的名字

  6.        System.out.println(weekDay.ordinal());//對象排在哪個位置

  7.        System.out.println(WeekDay.valueOf("SUN"));  

  8.        System.out.println(WeekDay.values().length);  


  9.        TrafficLamp lamp = TrafficLamp.GREEN;  

  10.        System.out.println(lamp.nextLamp());  

  11.    }  


  12. publicenum WeekDay {  


  13.        SUN(1),MON,TUE,WED,THI,FRI,SAT;//元素列表必須放在最前面,代表枚舉的實例對象


  14. //默認調用無參構造方法

  15. private WeekDay() {  


  16.            System.out.println("first");  

  17.        }  


  18. private WeekDay(int day) {  


  19.            System.out.println("second");  

  20.        }  

  21.    }  


  22. publicenum TrafficLamp {  


  23.        RED(30) {//每個元素代表一個實例對象,必須實現抽象方法

  24. @Override

  25. public TrafficLamp nextLamp() {  

  26. return GREEN;  

  27.            }  

  28.        },GREEN(45) {  

  29. @Override

  30. public TrafficLamp nextLamp() {  

  31. return YELLOW;  

  32.            }  

  33.        },YELLOW(5) {  

  34. @Override

  35. public TrafficLamp nextLamp() {  

  36. return RED;  

  37.            }  

  38.        };  


  39. publicabstract TrafficLamp nextLamp();//定義了抽象方法的枚舉不需要在類名上加抽象


  40. privateint time;  


  41. private TrafficLamp(int time) {  

  42. this.time = time;  

  43.        }  

  44.    }  



  45. }  

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ----------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章