![Java核心邏輯第12章JDK新特性_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/11/31508620-4272-449d-9a8d-7372bfe59ab9/31508620-4272-449d-9a8d-7372bfe59ab91.gif)
![Java核心邏輯第12章JDK新特性_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/11/31508620-4272-449d-9a8d-7372bfe59ab9/31508620-4272-449d-9a8d-7372bfe59ab92.gif)
![Java核心邏輯第12章JDK新特性_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/11/31508620-4272-449d-9a8d-7372bfe59ab9/31508620-4272-449d-9a8d-7372bfe59ab93.gif)
![Java核心邏輯第12章JDK新特性_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/11/31508620-4272-449d-9a8d-7372bfe59ab9/31508620-4272-449d-9a8d-7372bfe59ab94.gif)
![Java核心邏輯第12章JDK新特性_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/11/31508620-4272-449d-9a8d-7372bfe59ab9/31508620-4272-449d-9a8d-7372bfe59ab95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第12章章 jdk新特性新特性回顧回顧l class對(duì)象對(duì)象l 獲取類對(duì)象的方式獲取類對(duì)象的方式l 反射包反射包(java.lang.reflect)l 反射的作用反射的作用本章目標(biāo)本章目標(biāo)l靜態(tài)導(dǎo)入靜態(tài)導(dǎo)入l可變長(zhǎng)參數(shù)可變長(zhǎng)參數(shù)l格式化輸入輸出格式化輸入輸出l枚舉枚舉l注解注解ljdk6/jdk7新特性新特性本章結(jié)構(gòu)本章結(jié)構(gòu)jdk新特性新特性jdk6新特性新特性jdk7新特性新特性二進(jìn)制字面值二進(jìn)制字面值腳本支持腳本支持jdk5新特性新特性訪問訪問javac的的api可變長(zhǎng)參數(shù)可變長(zhǎng)參數(shù)格式化輸入格式化輸入/輸出輸出枚舉枚舉注解注解靜態(tài)導(dǎo)入靜態(tài)導(dǎo)入靜態(tài)導(dǎo)入靜態(tài)導(dǎo)入l通過靜態(tài)導(dǎo)入可以在使用一
2、個(gè)類型靜態(tài)成員的時(shí)候,不通過靜態(tài)導(dǎo)入可以在使用一個(gè)類型靜態(tài)成員的時(shí)候,不 用書寫類名,直接使用靜態(tài)成員即可用書寫類名,直接使用靜態(tài)成員即可l以前統(tǒng)一聲明常量時(shí),很多人選擇在一個(gè)接口中聲明許多以前統(tǒng)一聲明常量時(shí),很多人選擇在一個(gè)接口中聲明許多靜態(tài)常量,接口的用途是約定實(shí)現(xiàn)類有什么功能,用來聲靜態(tài)常量,接口的用途是約定實(shí)現(xiàn)類有什么功能,用來聲明常量顯然不合理,現(xiàn)在可以統(tǒng)一在一個(gè)類中聲明靜態(tài)常明常量顯然不合理,現(xiàn)在可以統(tǒng)一在一個(gè)類中聲明靜態(tài)常量,并且在需要的地方使用靜態(tài)導(dǎo)入量,并且在需要的地方使用靜態(tài)導(dǎo)入l注意:注意:靜態(tài)導(dǎo)入會(huì)降低程序的可讀性,不要過多使用!靜態(tài)導(dǎo)入會(huì)降低程序的可讀性,不要過多使用
3、!system.out.println(math.pi);system.out.println(math.abs(-1);靜態(tài)導(dǎo)入靜態(tài)導(dǎo)入import static java.lang.math.*;import static java.lang.system.*;public class teststatic public static void main(string args) system.out.println(pi);system.out.println(abs(-1);out.println(pi);可變長(zhǎng)參數(shù)可變長(zhǎng)參數(shù)l 可以使方法的參數(shù)個(gè)數(shù)可變可以使方法的參數(shù)個(gè)數(shù)可變publ
4、ic 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 string : s) system.out.println(string);可變長(zhǎng)參數(shù)可變長(zhǎng)參數(shù)l 可變長(zhǎng)參數(shù)其本質(zhì)實(shí)際上就是數(shù)組,但比定義數(shù)組更加靈可變長(zhǎng)參數(shù)其本質(zhì)實(shí)際上就是數(shù)組,但比定義數(shù)組更加靈 活活public static void print
5、1(string s) public static void print(string. s) for (string ss : s) system.out.println(ss);可變長(zhǎng)參數(shù)可變長(zhǎng)參數(shù)l 可以把可以把main函數(shù)改寫成可變長(zhǎng)參數(shù)函數(shù)改寫成可變長(zhǎng)參數(shù) l 一個(gè)方法中最多有一個(gè)可變長(zhǎng)參數(shù)一個(gè)方法中最多有一個(gè)可變長(zhǎng)參數(shù) l 可變長(zhǎng)參數(shù)必須作為方法的最后一個(gè)參數(shù)可變長(zhǎng)參數(shù)必須作為方法的最后一個(gè)參數(shù)public static void main(string. args) print();print(tom);print(tom, cat);格式化的輸入格式化的輸入輸出輸出l jdk5
6、.0提供了新的輸入輸出語句提供了新的輸入輸出語句格式化輸出語句格式化輸出語句 system.out.printf()string的靜態(tài)方法:的靜態(tài)方法:static string format(string format, object. args)可以用來生成一個(gè)字符串,這個(gè)方法的用法和可以用來生成一個(gè)字符串,這個(gè)方法的用法和printf一模一樣,一模一樣,printf顯然在程序中毫無用途,顯然在程序中毫無用途,string.format方方法才是非常實(shí)用的,尤其在拼裝字符串時(shí)法才是非常實(shí)用的,尤其在拼裝字符串時(shí)string name = 張三;int age = 20;system.out
7、.printf(有個(gè)學(xué)生叫%s,他的年齡是%d。n, name, age);/ 創(chuàng)建格式化字符串string msg = string.format(有個(gè)學(xué)生叫%s,他的年齡是%d。, name, age);system.out.println(msg);格式化的輸入格式化的輸入輸出輸出l 提供了更為簡(jiǎn)單的從命令行獲取輸入的工具類提供了更為簡(jiǎn)單的從命令行獲取輸入的工具類java.util.scanner 不要關(guān)閉不要關(guān)閉scanner,如關(guān)閉了,則,如關(guān)閉了,則system.in也關(guān)閉了也關(guān)閉了當(dāng)調(diào)用當(dāng)調(diào)用nextint()等方法時(shí)如果拋出異常(等方法時(shí)如果拋出異常(inputmismatch
8、exception),則這個(gè)),則這個(gè)scanner對(duì)象不可以再繼續(xù)對(duì)象不可以再繼續(xù)使用,必須重新創(chuàng)建一個(gè)。使用,必須重新創(chuàng)建一個(gè)。scanner input = new scanner(system.in);int i = input.nextint();枚舉類型枚舉類型l 一個(gè)類所創(chuàng)建的對(duì)象個(gè)數(shù)是固定的一個(gè)類所創(chuàng)建的對(duì)象個(gè)數(shù)是固定的l 枚舉本質(zhì)上還是類枚舉本質(zhì)上還是類l enum關(guān)鍵字關(guān)鍵字enum season spring, summer, autumn, winterpublic class testenum public static void main(string args)
9、season season = season.spring;枚舉類型枚舉類型l 在沒有枚舉類型前在沒有枚舉類型前 ,可以通過如下代碼模擬枚舉類型,可以通過如下代碼模擬枚舉類型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 stat
10、ic final season autumn = new season();public static final season winter = new season();private season() 枚舉特點(diǎn)枚舉特點(diǎn)l 枚舉類型的父類枚舉類型的父類 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
11、.ordinal();/ 0enum season spring, summer, autumn, winter枚舉特點(diǎn)枚舉特點(diǎn)l 枚舉類型的父類枚舉類型的父類 java.lang.enum static t extends enum t valueof(class enumtype, string name) 極重要的一個(gè)靜態(tài)方法,極重要的一個(gè)靜態(tài)方法,valueof,可以用字符串來找到對(duì)應(yīng)枚舉,可以用字符串來找到對(duì)應(yīng)枚舉對(duì)象。對(duì)象。public class testenum2 public static void main(string args) season season = enum
12、.valueof(season.class, spring);system.out.println(();枚舉特點(diǎn)枚舉特點(diǎn) 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();枚舉特點(diǎn)枚舉特點(diǎn)l 枚舉類型可以定義屬性,并提
13、供相應(yīng)的方法枚舉類型可以定義屬性,并提供相應(yīng)的方法enum season spring, summer, autumn, winter;private string name;public string getname() return name;public void setname(string name) = name;枚舉特點(diǎn)枚舉特點(diǎn)public class testenum public static void main(string args) season s = season.spring;s.setname(tomcat);system.out.print
14、ln(s.getname();枚舉特點(diǎn)枚舉特點(diǎn)l 枚舉類型有構(gòu)造方法枚舉類型有構(gòu)造方法 但只能是私有的但只能是私有的 l 枚舉類型可以顯示提供構(gòu)造方法枚舉類型可以顯示提供構(gòu)造方法enum season spring, summer, autumn, winter枚舉特點(diǎn)枚舉特點(diǎn)enum season spring(春天), summer(夏天), autumn(秋天), winter(冬天);private string name;season(string name) = name;public string getname() return name;public voi
15、d setname(string name) = name;枚舉特點(diǎn)枚舉特點(diǎn)l 枚舉不能夠繼承枚舉不能夠繼承l(wèi) 枚舉類型默認(rèn)是枚舉類型默認(rèn)是final修飾符修飾,也是不能被別的類繼承修飾符修飾,也是不能被別的類繼承l(wèi) 枚舉可以提供抽象方法枚舉可以提供抽象方法l枚舉支持枚舉支持switch case語句(語句(java7中字符串也支持)中字符串也支持)l枚舉是枚舉是絕對(duì)的單例絕對(duì)的單例,絕不會(huì)出現(xiàn)多個(gè)實(shí)例,即使反序列化,絕不會(huì)出現(xiàn)多個(gè)實(shí)例,即使反序列化都無法創(chuàng)建多個(gè)實(shí)例,用枚舉來做單例非常簡(jiǎn)單直接且好都無法創(chuàng)建多個(gè)實(shí)例,用枚舉來做單例非常簡(jiǎn)單直接且好用。用。枚舉特點(diǎn)枚舉特點(diǎn)e
16、num operator add public double 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);枚舉特點(diǎn)枚舉特點(diǎn)public class test
17、enum public static void main(string args) operator o = operator.add;system.out.println(o.calculate(1, 2);注解注解(annotation)l 注解的概念注解的概念 給程序員看的是注釋(單行注釋、多行注釋、給程序員看的是注釋(單行注釋、多行注釋、doc注釋)注釋) l 注解名注解名l jdk中提供的注解中提供的注解overridedeprecatedsupperesswarnings注解注解l 覆蓋覆蓋tostring()方法方法public class worker private stri
18、ng name;public void m1() public string tostring() return name;注解注解l 使用注解后,編譯器可以檢查覆蓋方法是否正確使用注解后,編譯器可以檢查覆蓋方法是否正確public class worker private string name;public void m1() overridepublic string tostirng() return name;注解注解l 注解的分類注解的分類標(biāo)記注解標(biāo)記注解單值注解單值注解多值多值/普通注解普通注解l 注解的父類注解的父類 java.lang.annotation.annotatio
19、nl 自定義注解自定義注解public interface 注解名注解名 public interface test注解注解l 元注解元注解target限定注解的使用目標(biāo)enum elementtype type, field, method, parameter, constructor, local_variable, annotation_type, package注解注解l 元注解元注解retention指明注解信息的保存時(shí)間指明注解信息的保存時(shí)間enum retentionpolicy source:注解信息只保存在源程序中,在類文件中不保存:注解信息只保存在源程序中,在類文件中不保
20、存 class (default):注解信息保存在類文件中,程序運(yùn)行時(shí):注解信息保存在類文件中,程序運(yùn)行時(shí)不能通過反射找到不能通過反射找到 runtime:注解保存在類文件中,程序運(yùn)行時(shí)通過反射:注解保存在類文件中,程序運(yùn)行時(shí)通過反射api可以找到可以找到注解注解l 完整的注解定義完整的注解定義target(value = elementtype.type )retention(value = retentionpolicy.runtime)interface first firstpublic class testannotation private string name;public v
21、oid m1() 注解注解l 注解屬性注解屬性target(value = elementtype.type )retention(value = retentionpolicy.runtime)interface first string value();first(test)public class testannotation private string name;public void m1() 注解注解l 注解屬性的類型共有注解屬性的類型共有24種種基本類型基本類型, string, class, enums, annotations, 以及它們的數(shù)組以及它們的數(shù)組注解案例注解案例
22、l 通過注解設(shè)計(jì)一個(gè)自動(dòng)測(cè)試的工具通過注解設(shè)計(jì)一個(gè)自動(dòng)測(cè)試的工具public class testmethod test(parameter = corejava)public void m1(string s1) system.out.println(method m1 + s1);public void m2(string s2) system.out.println(method m2 + s2);注解案例注解案例l test注解的設(shè)計(jì)注解的設(shè)計(jì)target( elementtype.method )retention(retentionpolicy.runtime)public int
23、erface test string parameter();注解案例注解案例l 自動(dòng)測(cè)試工具類的設(shè)計(jì)自動(dòng)測(cè)試工具類的設(shè)計(jì)如何得知這個(gè)類擁有如何得知這個(gè)類擁有test注解?注解?如何獲得如何獲得test注解中的參數(shù)?注解中的參數(shù)?如何運(yùn)行擁有注解的方法?如何運(yùn)行擁有注解的方法?注解案例注解案例public class testannotation public static void main(string args) throws exception / 獲得反射需要的類對(duì)象class c = testmethod.class;testmethod t = (testmethod) c.ne
24、winstance();/ 獲得所有的方法method m = c.getdeclaredmethods();for (method mm : m) / 判斷哪個(gè)方法擁有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);java se 6: 腳本支持腳本支持l為開發(fā)者提供了在同一應(yīng)用中使用不同語言的能力為開發(fā)者提供了在同一應(yīng)用中使用不同語言的能力l使用使用java庫(kù)擴(kuò)展腳本語言庫(kù)擴(kuò)展腳本語言lsun的的sdk中提供了中提供了javascript引擎引擎mozila rhino引擎引擎l引擎在引擎在中中l(wèi)示例:示例:/ 創(chuàng)建腳本引擎管理器scriptengi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年勞動(dòng)者權(quán)益變動(dòng)協(xié)議
- 2025年創(chuàng)業(yè)投資合作收益合作協(xié)議
- 2025年制造行業(yè)工人招募協(xié)議書
- 2025年別墅裝修托管項(xiàng)目協(xié)議書
- 2025年婚姻關(guān)系和解協(xié)議書策劃范本
- 2025年分包合同執(zhí)行進(jìn)度報(bào)告
- 2025年中草藥材料訂購(gòu)合同示例
- 2025年勞動(dòng)合同模板設(shè)計(jì)專業(yè)范本
- 2025年油氣銷售特許經(jīng)營(yíng)協(xié)議范本
- 2025年呼和浩特b2貨運(yùn)資格證模擬考試
- 祛痘產(chǎn)品原料配方與消費(fèi)者祛痘方案選擇建議
- 上海實(shí)驗(yàn)學(xué)校幼升小測(cè)試題資料
- 儒林外史每回概括
- RB/T 040-2020病原微生物實(shí)驗(yàn)室生物安全風(fēng)險(xiǎn)管理指南
- GB/T 889.1-2000I型非金屬嵌件六角鎖緊螺母
- 構(gòu)建物聯(lián)網(wǎng)系統(tǒng)原型-教學(xué)設(shè)計(jì)
- (完整word版)家譜WORD樣本
- 無主之地2全裝備代碼
- 小升初廣東省深圳市2021-2022學(xué)年六年級(jí)下學(xué)期期末數(shù)學(xué)真題測(cè)試模擬卷(解答題)有解析
- DB32∕T 2882-2016 城市軌道交通橋隧結(jié)構(gòu)養(yǎng)護(hù)技術(shù)規(guī)程
- 血液透析應(yīng)急流程圖+
評(píng)論
0/150
提交評(píng)論