JAVA異常處理、常用類、反射、集合

來源:互聯網
上載者:User

標籤:

異常

異常:在Java中是指被一個方法拋出的對象。

分類:檢查異常、運行時異常、錯誤

  運行時異常(uncheckd):RuntimeException和其子類

  檢查異常(checkd/搜檢異常):指Exception和其子類,且不是RuntimeException的子類;它必須經過處理才會找到

 

文法:

try{    //被保護的代碼}catch(異常的名稱 e1){    //捕獲塊}

注意:應先捕獲特殊再捕獲一般異常;try沒有出現異常catch將不會執行

 

異常處理的三種選擇:

  1)捕獲這個異常,不讓他沿著調用棧繼續向下拋出

  2)捕獲這個異常,並繼續向下拋出

  3)不捕獲這個異常,從而導致方法調用棧中被彈出,導致對象拋出給調用棧下面的main()方法。

 

聲明異常:

  關鍵字:throws  在當一個方法沒有處理檢查異常時使用

  例如:public void deposit(double amount) throws RuntimeException{}

拋出主動異常:

  關鍵字:throw   

  運行時異常可以不用聲明異常,檢查異常必須聲明異常

 

final關鍵字:

  用於在try塊後建立一個代碼塊,且他總會運行,不管異常是否發生

  注意:在方法返回之前,final塊將會執行

 

使用者自訂異常:

  1)所有的異常必須是Throwable的子類

   2)想編寫一個會被異常自動處理過聲明的規則的檢查異常,就需要繼承Exception類;

     3)如果編寫一個運行時異常,就需要繼承RuntimeException類

 

常用類

運行平台互動的類:

  System類:記錄執行時間, 複製數組,確定當前系統的屬性和擷取擷取系統環境變數等

  Runtime類:可以通過他的靜態方法getRuntime()擷取對象

 

String類:

  StringBuffer類:代表一個類容可變的字串(方法是安全執行緒的)

  StringBuilder類:代表字串對象,效能略高

 

Date類:

  DateFormat抽象類別:方法返回特定地區格式的DateFormat對象

  SimpleDateFormat類:建立其對象時需要傳入日期和時間格式作為格式化的模板

  Calendar抽象類別

  GregorianCalendar類:西曆日曆

 

隨機數:

  格式例如:產生0-10的隨機數 

Random r=new Random();int n1=r.nextInt();n1=Math.abs(r.nextInt()%10);System.out.println(n1);

裝箱:基本類型 向 參考型別

拆箱:參考型別 向 基本類型

 

Regex:

  \;   ^(開始); $(結束);  *(0次或多次);  +(1次或多次);  ?(0次或一次);  {n}(重複n次);  {n,m}(最多m最少n);  .(出\n之外的任何單個字元);  x|y(x或y);

  [xyz](所包含的任意一個字元);;  [^xyz](未包含的任一字元);  [a-z](範圍);  [^a-z](不在範圍內);  \b(單詞邊界);  \B(非單詞邊界);  \d(一個數字字元);  \D(非數字);

  \f(換頁);  \n(換行);  \r(斷行符號);  \s(空白);  \S(非空白);  \w(底線和任一字元); \W(非單詞字元);

  正確使用:

    Pattern類:編譯Regex,建立對象,先調該靜態方法compile()返回一個Pattern對象

    Matcher類:解析Pattern,獲得對象,調用Pattern對象的matcher()方法

    格式例如:

        

String name="y_123456";Pattern p=Pattern 。compile(正則符);Matcher m=p.matcher(name);if(matcher.matches()){}else{}

 

 

反射

Jvam中所包含提供的載入器:

  1)根類載入器:載入核心Java類(jiava.*開頭)

  2)擴充類載入器:載入擴充的java類(java.*開頭中JAR的類包)

  3)系統載入器:載入自身的類

 

類的載入機制:

  1)類的class檔案讀入記憶體中後,建立java.lang.util.class對象,一但某個被載入JVM中,同一個類就不會被再次輸入

  2)串連:把類的二進位系統資料合併到JRE中

  3)初始化

 

反射:

  含義:可以在運行期載入,探知和使用編譯期完全未知的類

  載入:class c=class.forname("全限定類名");

  查看所有方法:

Method[]  motheds=cl.getDeclaredMethods();    for(Method me: motheds){            System.out.println(me.getName());        }

查看構造器:

        Constructor[] co=cl.getDeclaredConstructors();        for(Constructor<?> con: co){            System.out.println(con);        }

擷取欄位:

         Field[] fields = clazz.getDeclaredFields();         for (Field field : fields) {          System.out.println(field.getType().getName() + " " +          field.getName());        }

建立對象:

1         Constructor<?> constructor = cl.getConstructor(String.class, Date.class);2         SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");3         String st="2000-10-12";4         Date da=s.parse(st);5         Object obj = constructor.newInstance("張三",da);

調用方法:

1         Method setAddress = cl.getMethod("setAddress",String.class);2         Object adress = setAddress.invoke(obj,"成都");3         Method setSex=cl.getMethod("setSex",String.class);4         Object sex=setSex.invoke(obj, "男");

...表示可變參數

 

Java集合架構

collection介面(控制單列資料):

  分為兩個子介面:

    Set介面(沒有順序且不能重複):

      兩個重要實作類別:

        HashSet:基於雜湊演算法的set介面實現,沒有順序,不允許出現重複元素

        ThreeSet: 有順序的

    List介面(有順序,可以重複)

      兩個重要實作類別:

        ArrayList:是以數組方式實現,查詢效率高,插入刪除效率低

        LinkedList:是以鏈表方式實現,適合頻繁增加刪除元素時使用(速度快)

      重要方法:

        插入:對象名.add();        返回指定:對象名.get();          替換:對象名.set();         刪除:對象名.remove();

      泛型:

         作用:1)保證在集合中元素型別安全;  2)資料類型不用強制轉化

         實質:允許在定義介面、類時指定型別參數

         例如:ArrayList<Integer> al=new ArrayList<Integer>;

  Interator介面:用於遍曆集合的介面,有一個iterator方法,返回Interator對象

    此介面方法:

      更多元素:hasNaxt();    下一個元素:nest();         刪除iterator返回的最後一個元素:remove();

      格式:

 1     public static void main(String[] args) { 2         MyComparator my=new MyComparator(); 3         List<SortObject> l=new ArrayList<SortObject>();         4         SortObject s1=new SortObject(1,4); 5         SortObject s2=new SortObject(7,9); 6         SortObject s3=new SortObject(5,6); 7         l.add(s1); 8         l.add(s2); 9         l.add(s3);        10         Collections.sort(l,my);11         Iterator it = l.iterator();12         while(it.hasNext()){            13             Object obj = it.next();14             System.out.println(obj);15         }16 17     }18 19 }

 

Map介面(修飾鍵值對):

  含義:對應的是一種從鍵(Key)到值(Value)的對應關係的集合(一對一)

  兩個實作類別:HashMap;  TreeMap;

  基本方法:

    返回指定鍵相關的值:get();   向映射中添加索引值對: put();    刪除所有元素:clear();   刪除指定:remove();

 

輔助類Collections和Arrays

  Collections類用於對集合元素進行排序、查詢、修改(靜態方法)

    例如排序:Collections.sort(list cmp);

  Arrays類:運算元組

    例如:Arrays.sort(arr);

 

集合當中用size擷取數組長度  

 

JAVA異常處理、常用類、反射、集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.