JAVA語法彙總(三)

aliceiwill發表於2018-08-12

此篇文章記錄異常處理 列舉 反射 註解 IO流 泛型的一些體會     內容可能不全,但是歡迎同仁們過來看看,有可能會讓你想起一些遺忘的事務

丟擲異常
throw用於方法括號裡  throws用於方法體或者程式碼塊中
如何處理throw丟擲的異常物件
自己捕獲異常 即是用try ctch語句處理
將異常丟擲後給別人(即是呼叫者)處理
那個人也有兩種方式  一是try' catch語句
二是throws接著將異常上拋(上拋給jvm)

什麼時候只能看檢查時異常???
檢查時異常用throw丟擲必須用try catch處理
而執行時異常則不用
throw丟擲執行時異常不需要加throws


F5 F6 F7 F8在eclipse除錯中
先進入debug模式中
f5是進入當前方法
f6是執行下一行程式碼
f7退出方法
f8進入下一個斷點

log4j

 

列舉
1.構造方法只能是private
2.列舉中可以定義抽象方法,但是列舉物件必須實現這些抽象方法


Colors [] colors=Colors.values();
        for(Colors color:colors) {
            System.out.println(color.getName()+color.getId());

this不能用在靜態中!!!
 

jvm在執行中,對於任何一個類,都能知道他的所有屬性與方法;
對於任何一個物件,都能呼叫它的屬性與方法,是一個動態呼叫物件的方法
反射就是把java類中的種種成分對映為一個個java物件 如成員變數 方法 構造方法 包
其中變數用field表示 方法用method 建構函式用constructor 

一   。
Class是反射的入口!! 封裝了一個個類的資訊 呼叫其物件獲取更多
PS:該類不可被繼承 因為被final修飾 該類的構造方法是private 不能通過new來建立!
通常用forname獲取class
1.Class clazz =forname("abc.Student")
2.Class clazz=Student.class
兩種方式獲取

如果是基本資料型別  採取Integer Byte Long Short Double Float Boolean Character
如clazz=Integer.Type    即字尾加上type

ps:getName()是表示輸出全名
而 getClass()則是在已有物件時候往回撥用其內容

陣列對用的 通過【】來獲取class例項
如String[] name=new String[5]
Class clazz=String [].class

二。
獲取構造方法 分為4種 
1.Constrctor [] constrctors=clazz.getConstroctors;
2.Constrctor [] constrctors=clazz.getCDeclaredonstroctors;
3.Constructor constructor=clazz.getConstructor();
4.Constructor constructor=clazz.getDeclaredConstructor(String.class)
區分好是返回一個還是所有   是返回public還是所有

ps:for迴圈的應用
Constructor [] constructors=clazz.getConstructoes();
for(Constructor constructor:constructors)
    System.out.println(constructor.getName());

操作構造方法
即建立物件 
常常應用 constructor.setAccessible(true)來忽視
用newInstance()來建立一個新物件
如:Object object=constructor.newInstance("xiaowang");
相當於上轉型物件

三。
獲取屬性
getField();getFields();
set設定屬性值
get獲取屬性值
如Field field=clazz.getField(name)
Student student=new Student()
field.set(student,xiaowang)
Object obj=field.get(student)

Java註解

SuppressWaring是無用的
cirl按進去註解檢視原始碼

自定義註解
eclipes自動跟蹤  兩套程式碼執行  一套定義反射 一套反射實現追蹤功能
default用於為註解屬性賦預設值,如果一個註解屬性沒有預設值,則使用該註解時必須為其賦值
如果屬性名為value,則可以直接賦值


內建註解
override不允許用在類上
java註解按照有無引數分為三種@Annotation
分別是不帶引數的,帶一個引數的,帶多個引數的!
自定義註解分為@Override註解 @Deprecated註解 @suppressWaring註解
SuppressWaring註解用於消除警告(比如deprecation標記的,比如unused,比如serial)
 

泛型用來約束能存放什麼型別的資料!
names.add(“2,王五")把他排到第三位!
iterator也是一種遍歷方式 
Iterator <String> iterator=names.iterator();
            while(iterator.hasNext()) {
                String name=iterator.next();
                System.out.println(name);
            }

 

File有三個構造方法  mkdir只能建立一層沒有的資料夾
但是mkdirs卻可以建立多個資料夾!
delete只刪除最後一級!
File.Seperater表示斜線! 其相容性好,各個系統都能用
如"D:"+File.separator+"a"+File.separator+"b"

模組化開發!

相關文章