1、開始的嘮叨正則表達式
上篇裏相對重要的是面向抽象與面向接口的編程,兩者都體現了開閉原則。編程
本期繼續回顧Java中的基礎知識。數組
2、學習筆記app
(一)內部類與異常類工具
1.內部類:學習
值得一提的是內部類編譯後的格式,代碼以下:spa
public class A { class B{ } }
則編譯後的字節碼文件名字格式爲:調試
2.匿名類:code
3.異常類:通常的IDE工具都會提示「此處應有異常」,系統自帶的異常就很少說了。惟一值得注意的是try部分一旦發生異常,就會馬上結束執行,轉而執行catch部分。orm
來看看如何自定義異常:
定義一個異常類繼承Exception類
public class TotalException extends Exception{ public String warnMess(){ return "有毒"; } }
在可能產生異常的方法名中throws自定義的異常類,並在具體的方法體重throw一個自定義異常的實例
public class Count { public void count (int a) throws TotalException{ if(a==10){ throw new TotalException(); } }
在使用該方法時包裹try-catch語句
public static void main(String[] args) { Count c=new Count(); try { c.count(10); } catch (TotalException e) { System.out.println(e.warnMess()); } }
4.斷言:assert用於代碼調試階段,當程序不許備經過捕獲異常來處理錯誤時就可使用斷言。
定義一個斷言(表達式爲true時繼續執行,false則從斷言處終端執行)
int a=10; assert a!=10:"a不但是10";
Java解釋器默認關閉斷言語句,要用-ea命令手動開啓
(二)經常使用實用類
1.String:
重要方法:
String (char a[])//由字符數組構造 public int length()//獲取長度 public boolean equals(String s)//是否有相同實體 public boolean startsWith(String s)//是否以s開頭 public boolean endsWith(String s)//是否以s結尾 public int compareTo(String s)//比較 public boolean contains(String s)//是否包含s public int indexOf(String s)//s首次出現的索引 public String substring(int startpoint)//截取 public String trim()//刪除空格
來看一個經典的equals與==的問題:
public static void main(String[] args) { String a=new String("1111"); String b=new String("1111"); System.out.println(a.equals(b)); System.out.println(a==b); a="1111"; b="1111"; System.out.println(a.equals(b)); System.out.println(a==b); }
輸出結果爲:true false true true,可見equals方法比較當前字符串對象的實體是否與參數指定的實體相同,而==比較的則是引用是否相同。
2.正則表達式:正則表達式很強大,是一個必須掌握的大坑。元字符表直接百度百科。下面給出一個在Java中使用正則表達式的例子:
public static void main(String[] args) { String regex="[a-zA-Z]+"; String in="dhasdd4alidhskjl"; if(in.matches(regex)){ System.out.println("全是英文字母"); }else{ System.out.println("不全是英文字母"); } }
3.Date:Date能夠獲取當前時間,通常狀況下須要格式化
public static void main(String[] args) { DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date=new Date(); System.out.println(df.format(date)); }
4.Math:封裝了一系列 數學方法
5.Class:傳說中的Java反射技術
先用Class.forName(Sting s)法獲取Apple類的class
再利用class對象調用newInstance()方法實例化Apple類的對象
public static void main(String[] args) { try { Class clazz=Class.forName("Apple"); Apple apple=(Apple)clazz.newInstance(); apple.setNumber(1); System.out.println(apple.getNumber()); Apple apple2=new Apple(); Class class1=apple2.getClass(); System.out.println(class1.getName()); } catch (Exception e) { e.printStackTrace(); } }
3、結束的嘮叨
之前看大神的博客還沒什麼感受,如今本身開始寫了才發現困難重重。
目前爲止,我寫博客的主要目的是便於本身的知識鞏固,寫的很散,屬於把一本書上的內容根據本身的短板超濃度壓縮。
因此有什麼地方看不懂絕對不是你的問題,歡迎討論。