




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第12章 JDK新特性第12章 JDK新特性回顧 class對象 獲取類對象的方式 反射包(java.lang.reflect) 反射的作用回顧 class對象本章目標(biāo)靜態(tài)導(dǎo)入可變長參數(shù)格式化輸入輸出枚舉注解JDK6/JDK7新特性本章目標(biāo)靜態(tài)導(dǎo)入本章結(jié)構(gòu)JDK新特性JDK6新特性JDK7新特性二進(jìn)制字面值腳本支持JDK5新特性訪問javac的api可變長參數(shù)格式化輸入/輸出枚舉注解靜態(tài)導(dǎo)入本章結(jié)構(gòu)JDK新特性JDK6新特性JDK7新特性二進(jìn)制字面值靜態(tài)導(dǎo)入通過靜態(tài)導(dǎo)入可以在使用一個類型靜態(tài)成員的時候,不 用書寫類名,直接使用靜態(tài)成員即可以前統(tǒng)一聲明常量時,很多人選擇在一個接口中聲明許多靜態(tài)常
2、量,接口的用途是約定實現(xiàn)類有什么功能,用來聲明常量顯然不合理,現(xiàn)在可以統(tǒng)一在一個類中聲明靜態(tài)常量,并且在需要的地方使用靜態(tài)導(dǎo)入注意:靜態(tài)導(dǎo)入會降低程序的可讀性,不要過多使用!System.out.println(Math.PI);System.out.println(Math.abs(-1);靜態(tài)導(dǎo)入通過靜態(tài)導(dǎo)入可以在使用一個類型靜態(tài)成員的時候,不Sy靜態(tài)導(dǎo)入import static java.lang.Math.*;import static java.lang.System.*;public class TestStatic public static void main(String
3、args) System.out.println(PI);System.out.println(abs(-1);out.println(PI);靜態(tài)導(dǎo)入import static java.lang.Ma可變長參數(shù) 可以使方法的參數(shù)個數(shù)可變public static void print(String s) System.out.println(s);public static void main(String args) print();print(tom);print(tom,cat);public static void print(String. s) for (String stri
4、ng : s) System.out.println(string);可變長參數(shù) 可以使方法的參數(shù)個數(shù)可變public stati可變長參數(shù) 可變長參數(shù)其本質(zhì)實際上就是數(shù)組,但比定義數(shù)組更加靈 活public static void print1(String s) public static void print(String. s) for (String ss : s) System.out.println(ss);可變長參數(shù) 可變長參數(shù)其本質(zhì)實際上就是數(shù)組,但比定義數(shù)組更加可變長參數(shù) 可以把main函數(shù)改寫成可變長參數(shù) 一個方法中最多有一個可變長參數(shù) 可變長參數(shù)必須作為方法的最后一個參
5、數(shù)public static void main(String. args) print();print(tom);print(tom, cat);可變長參數(shù) 可以把main函數(shù)改寫成可變長參數(shù) public格式化的輸入輸出 JDK5.0提供了新的輸入輸出語句格式化輸出語句 System.out.printf()String的靜態(tài)方法:static String format(String format, Object. args)可以用來生成一個字符串,這個方法的用法和printf一模一樣,printf顯然在程序中毫無用途,String.format方法才是非常實用的,尤其在拼裝字符串時St
6、ring name = 張三;int age = 20;System.out.printf(有個學(xué)生叫%s,他的年齡是%d。n, name, age);/ 創(chuàng)建格式化字符串String msg = String.format(有個學(xué)生叫%s,他的年齡是%d。, name, age);System.out.println(msg);格式化的輸入輸出 JDK5.0提供了新的輸入輸出語句Str格式化的輸入輸出 提供了更為簡單的從命令行獲取輸入的工具類java.util.Scanner 不要關(guān)閉Scanner,如關(guān)閉了,則System.in也關(guān)閉了當(dāng)調(diào)用nextInt()等方法時如果拋出異常(Inpu
7、tMismatchException),則這個Scanner對象不可以再繼續(xù)使用,必須重新創(chuàng)建一個。Scanner input = new Scanner(System.in);int i = input.nextInt();格式化的輸入輸出 提供了更為簡單的從命令行獲取輸入的工具類枚舉類型 一個類所創(chuàng)建的對象個數(shù)是固定的 枚舉本質(zhì)上還是類 enum關(guān)鍵字enum Season SPRING, SUMMER, AUTUMN, WINTERpublic class TestEnum public static void main(String args) Season season = Seas
8、on.SPRING;枚舉類型 一個類所創(chuàng)建的對象個數(shù)是固定的enum Seaso枚舉類型 在沒有枚舉類型前 ,可以通過如下代碼模擬枚舉類型public class TestSeason public static void main(String args) Season season = Season.SPRING;class Season public static final Season SPRING = new Season();public static final Season SUMMER = new Season();public static final Season AU
9、TUMN = new Season();public static final Season WINTER = new Season();private Season() 枚舉類型 在沒有枚舉類型前 ,可以通過如下代碼模擬枚舉類型p枚舉特點 枚舉類型的父類 java.lang.Enum name()ordinal()public class TestEnum1 public static void main(String args) Season s = Season.SPRING;System.out.println(();/ SPRINGSystem.out.println(s
10、.ordinal();/ 0enum Season SPRING, SUMMER, AUTUMN, WINTER枚舉特點 枚舉類型的父類 java.lang.Enumpu枚舉特點 枚舉類型的父類 java.lang.Enum static T extends Enum T valueOf(Class enumType, String name) 極重要的一個靜態(tài)方法,valueOf,可以用字符串來找到對應(yīng)枚舉對象。public class TestEnum2 public static void main(String args) Season season = Enum.valueOf(Se
11、ason.class, SPRING);System.out.println(();枚舉特點 枚舉類型的父類 java.lang.Enumpu枚舉特點 values()public class TestEnum3 public static void main(String args) Season seasons = Season.values();for (Season season : seasons) System.out.println(name is + () + ,ordinal + season.ordinal();枚舉特點 valu
12、es()public class Test枚舉特點 枚舉類型可以定義屬性,并提供相應(yīng)的方法enum Season SPRING, SUMMER, AUTUMN, WINTER;private String name;public String getName() return name;public void setName(String name) = name;枚舉特點 枚舉類型可以定義屬性,并提供相應(yīng)的方法enum S枚舉特點public class TestEnum public static void main(String args) Season s = Se
13、ason.SPRING;s.setName(tomcat);System.out.println(s.getName();枚舉特點public class TestEnum 枚舉特點 枚舉類型有構(gòu)造方法 但只能是私有的 枚舉類型可以顯示提供構(gòu)造方法enum Season SPRING, SUMMER, AUTUMN, WINTER枚舉特點 枚舉類型有構(gòu)造方法 但只能是私有的 enum Se枚舉特點enum Season SPRING(春天), SUMMER(夏天), AUTUMN(秋天), WINTER(冬天);private String name;Season(String name)th
14、 = name;public String getName() return name;public void setName(String name) = name;枚舉特點enum Season 枚舉特點 枚舉不能夠繼承 枚舉類型默認(rèn)是final修飾符修飾,也是不能被別的類繼承 枚舉可以提供抽象方法枚舉支持switch case語句(java7中字符串也支持)枚舉是絕對的單例,絕不會出現(xiàn)多個實例,即使反序列化都無法創(chuàng)建多個實例,用枚舉來做單例非常簡單直接且好用。枚舉特點 枚舉不能夠繼承枚舉特點enum Operator ADD public double
15、calculate(double a, double b) return a+b; , SUBSTRACT public double calculate(double a, double b) return a-b; , MULTIPLY public double calculate(double a, double b) return a*b; , DIVIED/省略代碼; public abstract double calculate(double a,double b);枚舉特點enum Operator枚舉特點public class TestEnum public static
16、 void main(String args) Operator o = Operator.ADD;System.out.println(o.calculate(1, 2);枚舉特點public class TestEnum 注解(Annotation) 注解的概念 給程序員看的是注釋(單行注釋、多行注釋、doc注釋) 注解名 JDK中提供的注解OverrideDeprecatedSupperessWarnings注解(Annotation) 注解的概念 注解 覆蓋toString()方法public class Worker private String name;public void m
17、1() public String toString() return name;注解 覆蓋toString()方法public class 注解 使用注解后,編譯器可以檢查覆蓋方法是否正確public class Worker private String name;public void m1() Overridepublic String toStirng() return name;注解 使用注解后,編譯器可以檢查覆蓋方法是否正確public注解 注解的分類標(biāo)記注解單值注解多值/普通注解 注解的父類 java.lang.annotation.Annotation 自定義注解public
18、 interface 注解名 public interface Test注解 注解的分類注解 元注解Target限定注解的使用目標(biāo)enum ElementType TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE, PACKAGE注解 元注解注解 元注解Retention指明注解信息的保存時間enum RetentionPolicySOURCE:注解信息只保存在源程序中,在類文件中不保存CLASS (Default):注解信息保存在類文件中,程序運行時不能通過反射找到RUNTIME:注解保存
19、在類文件中,程序運行時通過反射API可以找到注解 元注解注解 完整的注解定義Target(value = ElementType.TYPE )Retention(value = RetentionPolicy.RUNTIME)interface First Firstpublic class TestAnnotation private String name;public void m1() 注解 完整的注解定義Target(value = El注解 注解屬性Target(value = ElementType.TYPE )Retention(value = RetentionPolicy.
20、RUNTIME)interface First String value();First(test)public class TestAnnotation private String name;public void m1() 注解 注解屬性Target(value = Eleme注解 注解屬性的類型共有24種基本類型, String, Class, enums, annotations, 以及它們的數(shù)組注解 注解屬性的類型共有24種注解案例 通過注解設(shè)計一個自動測試的工具public class TestMethod Test(parameter = corejava)public voi
21、d m1(String s1) System.out.println(method m1 + s1);public void m2(String s2) System.out.println(method m2 + s2);注解案例 通過注解設(shè)計一個自動測試的工具public cla注解案例 Test注解的設(shè)計Target( ElementType.METHOD )Retention(RetentionPolicy.RUNTIME)public interface Test String parameter();注解案例 Test注解的設(shè)計Target( Elemen注解案例 自動測試工具類的
22、設(shè)計如何得知這個類擁有Test注解?如何獲得Test注解中的參數(shù)?如何運行擁有注解的方法?注解案例 自動測試工具類的設(shè)計注解案例public class TestAnnotation public static void main(String args) throws Exception / 獲得反射需要的類對象Class c = TestMethod.class;TestMethod t = (TestMethod) c.newInstance();/ 獲得所有的方法Method m = c.getDeclaredMethods();for (Method mm : m) / 判斷哪個方法
23、擁有Test標(biāo)注if (mm.isAnnotationPresent(Test.class) / 獲得Test標(biāo)注Test tt = mm.getAnnotation(Test.class);/ 獲得Parameter屬性的值String name = tt.parameter();mm.invoke(t, name);注解案例public class TestAnnotatioJava SE 6: 腳本支持為開發(fā)者提供了在同一應(yīng)用中使用不同語言的能力使用Java庫擴(kuò)展腳本語言Sun的SDK中提供了JavaScript引擎Mozila Rhino引擎引擎在中示例:/ 創(chuàng)建腳本引擎管理器ScriptEngineManager engineManager = new ScriptEngineManager();/ 獲得腳
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 暖氣安裝合同協(xié)議書
- 山東省臨沂市郯城縣2024-2025學(xué)年八年級上學(xué)期期末生物學(xué)試題(含答案)
- 辦公樓簡易裝修合同
- 證券投資咨詢服務(wù)協(xié)議書
- 深圳房屋出租合同
- 智能家居設(shè)備購買安裝合同
- 全球金融中心交易量對比表
- 季度工作計劃與執(zhí)行方案
- 健康管理與咨詢協(xié)議書
- 會議室內(nèi)設(shè)備使用情況統(tǒng)計表
- 法考-01刑法-案例指導(dǎo)用書【】
- 《考古學(xué)》第二章-田野考古課件
- 膀胱鏡檢查記錄
- 檔案銷毀清冊
- 固體物理21固體的結(jié)合課件
- 水平定向鉆施工規(guī)范方案
- 細(xì)支氣管肺泡癌的影像診斷(61頁)
- 2022年東北大學(xué)現(xiàn)代控制理論試題及答案
- X射線的物理學(xué)基礎(chǔ)-
- 教學(xué)樓畢業(yè)設(shè)計資料
- 國網(wǎng)直流電源系統(tǒng)技術(shù)監(jiān)督規(guī)定
評論
0/150
提交評論