




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Java5語言新特性 n(學(xué)時數(shù):學(xué)時)Java5語言新特性n1了解了解java5.0新語言特性包括哪幾個方面。新語言特性包括哪幾個方面。n2了解了解java5.0中增強的中增強的for循環(huán)循環(huán) 。n3了解了解java5.0的注釋新特性的注釋新特性 。n4掌握枚舉掌握枚舉 。n5. 掌握范型掌握范型 。n6. 掌握類型自動轉(zhuǎn)換掌握類型自動轉(zhuǎn)換 。n7. 了解靜態(tài)導(dǎo)入了解靜態(tài)導(dǎo)入 n8. 了解格式化輸入與輸出了解格式化輸入與輸出 。 Java5語言新特性n1.1 新語言特性總覽新語言特性總覽 n1.2 增強的增強的for循環(huán)循環(huán) n1.3 注釋注釋 n1.4 枚舉枚舉 n1.5 范型范型 n1.
2、6 類型自動轉(zhuǎn)換類型自動轉(zhuǎn)換 n1.7 靜態(tài)導(dǎo)入靜態(tài)導(dǎo)入 n1.8 格式化輸入與輸出格式化輸入與輸出 Java5語言新特性n1.1.1 Java 5.0 的誕生的誕生n1.1.2 Java 5.0的新語言特性的新語言特性 Java5語言新特性n1.2.1 Init表達式表達式 n1.2.2 局限性局限性 Java5語言新特性n1.3.1 注釋的作用注釋的作用 n1.3.2 用戶自定義標簽用戶自定義標簽 n1.3.3 獲取注釋信息獲取注釋信息 Java5語言新特性n1.4.1 enum類型特征類型特征 n1.4.2 使用使用enum類型類型Java5語言新特性n1.5.1 類型安全類型安全n1.
3、5.2范型定義范型定義 n1.5.3 聲明范型類和類型參數(shù)聲明范型類和類型參數(shù) n1.5.4 聲明范型接口和多個類型參聲明范型接口和多個類型參數(shù)數(shù) Java5語言新特性n1.6.1 類型自動轉(zhuǎn)換類型自動轉(zhuǎn)換 Java5語言新特性n1.7.1 靜態(tài)導(dǎo)入靜態(tài)導(dǎo)入 Java5語言新特性n1.8.1 格式化輸出格式化輸出 n1.8.2 格式化輸入格式化輸入 Java5語言新特性n時間:時間:2004年年10月月 n版本名稱不是版本名稱不是Java1.5而是而是Java 5.0的原因的原因 ?從從Java誕生至今已有誕生至今已有9年時間,而從有年時間,而從有J2SE算起也有算起也有5個年頭了;在這樣的背
4、境下,將該個年頭了;在這樣的背境下,將該版本號從版本號從1.5改為改為5.0可以更好的反映出新版的可以更好的反映出新版的Java技術(shù)的成熟度、穩(wěn)定性、可伸縮性、安全技術(shù)的成熟度、穩(wěn)定性、可伸縮性、安全性。性。 nJava 5.0的目標的目標 :通過增強:通過增強Java平臺的力量,平臺的力量,允許開發(fā)者更容易地使用,允許開發(fā)者更容易地使用,Java編程語言的這編程語言的這些改進將吸引大量各種些改進將吸引大量各種Java開發(fā)者開發(fā)者 。Java5語言新特性n范型范型 :添加編譯時類型來檢查您的代碼:添加編譯時類型來檢查您的代碼 ,使用范型來,使用范型來代替所有的類型轉(zhuǎn)換代替所有的類型轉(zhuǎn)換 。n加
5、強的加強的For循環(huán):在循環(huán):在Collection中使用循環(huán)來代替迭代中使用循環(huán)來代替迭代器器 。n自動打包:無須手工打包和拆包自動打包:無須手工打包和拆包(box and unbox)原原始類型始類型 。n枚舉:枚舉:Java開發(fā)者開發(fā)者 可以使用枚舉類可以使用枚舉類 。n變參:方法調(diào)用之中把變參當(dāng)作一系列獨立的參數(shù)變參:方法調(diào)用之中把變參當(dāng)作一系列獨立的參數(shù) 。n靜態(tài)導(dǎo)入:靜態(tài)倒入(靜態(tài)導(dǎo)入:靜態(tài)倒入(Static Import)特征允許您)特征允許您導(dǎo)入所有靜態(tài)類的成員到您的代碼中,并且可以通過導(dǎo)入所有靜態(tài)類的成員到您的代碼中,并且可以通過簡短和非限制的名稱來引用這些常量和方法。簡短和
6、非限制的名稱來引用這些常量和方法。 n評注評注 :提供了一個代碼運行時可訪問的信息:提供了一個代碼運行時可訪問的信息 。n國際化:國際化:Unicode 4.0的支持的支持 。n質(zhì)量:穩(wěn)定性、強壯性和兼容性質(zhì)量:穩(wěn)定性、強壯性和兼容性 Java5語言新特性n在循環(huán)中,初始化表達式只計算一次在循環(huán)中,初始化表達式只計算一次 未增強的未增強的For :int sum = 0;Integer numbers = computeNumbers();for (int i=0; i numbers.length ; i+) sum += numbersi;增強后的增強后的For: int sum = 0;
7、for ( int number: computeNumbers() ) sum += number; Java5語言新特性n不可以在迭代期間訪問迭代器或下標。不可以在迭代期間訪問迭代器或下標。例子例子1:for (int i=0; i numbers.length ; i+) if (i != 0) System.out.print(,); System.out.print(numbersi);例子例子2:for (Iterator it = n.iterator() ; it.hasNext() ; ) if (it.next() 0) it.remove(); Java5語言新特性n可以
8、被用來生成文檔,檢查代碼間依賴關(guān)系,幫助編譯器作語法可以被用來生成文檔,檢查代碼間依賴關(guān)系,幫助編譯器作語法檢查。檢查。n文檔生成工具:文檔生成工具:Xdoclet 、javadocn代碼檢查舉例:代碼檢查舉例:public class Parent public void foo() System.out.println(Original Implementation of foo); public class Child extends Parent Override public void foo() System.out.println(Overide Implementation o
9、f foo); Java5語言新特性子類想重載子類想重載foo()方法,不過用戶可能一時疏方法,不過用戶可能一時疏忽把它寫成了忽把它寫成了fob()。 錯誤提示:錯誤提示: Child.java:3: method does not override a method from its superclass Override 1 errorJava5語言新特性用戶自定義標簽用戶自定義標簽 :package tiger.annotation;/* * 用戶自定義標簽用戶自定義標簽MyTag */public interface MyTag /定義了一個定義了一個tag之后,用戶就可以在任何之后,
10、用戶就可以在任何java文件中使用這個文件中使用這個tag了:了:import tiger.annotation.MyTag;public class TagTest MyTag public void testTag() /注釋類型還可以有成員變量:注釋類型還可以有成員變量:package tiger.annotation;/* * 用戶自定義標簽,帶有成員變量的用戶自定義標簽,帶有成員變量的MyTag */public interface MyTag String name(); int age();Java5語言新特性用戶可以這么使用這個標簽:用戶可以這么使用這個標簽: MyTag(na
11、me=MyTag,age=1) public void testTag() Java5語言新特性import java.lang.annotation.Annotation;import tiger.annotation.MyTag;public class TagTest MyTag(name=MyTag,age=1) public void test() public static void main(String args) TagTest tt = new TagTest(); try Annotation annotation =tt.getClass().getMethod(tes
12、t).getAnnotations(); for (Annotation tag :annotation) System.out.println(Tag is: + tag); System.out.println() + (MyTag)tag).name(); System.out.println(tag.age() + (MyTag)(tag).age(); catch(NoSuchMethodException e) e.printStackTrace(); Java5語言新特性n執(zhí)行執(zhí)行TagTest可以得到輸出如下可以得到輸出如下: Tag is:tiger.annotation.M
13、yTag(name=MyTag, age=1)()MyTagtag.age()1 Java5語言新特性n它不能有它不能有public的構(gòu)造函數(shù)的構(gòu)造函數(shù)n所有枚舉值都是所有枚舉值都是public、static和和final的。的。n默認實現(xiàn)了默認實現(xiàn)了parable接口。接口。 nenum重載了重載了toString方法方法nvalueOf方法,這個方法和方法,這個方法和toString方法是相方法是相對應(yīng)的。對應(yīng)的。nvalues方法方法noridinal方法方法Java5語言新特性n遍歷所有枚舉值:遍歷所有枚舉值: for (Color c: Color.values() System.o
14、ut.println(“find value:” + c); Java5語言新特性n在在enum中定義方法和變量中定義方法和變量 :public enum Color Red, Green, Blue; /定義一個變量表示枚舉值的數(shù)目。定義一個變量表示枚舉值的數(shù)目。 private static int number = Color.values().length ; /* * 隨機返回一個枚舉值隨機返回一個枚舉值 return a random enum value. */ public static Color getRandomColor() long random = System.c
15、urrentTimeMillis() % number; switch (int) random) case 0: return Color.Red; case 1: return Color.Green; case 2: return Color.Blue; default : return Color.Red; Java5語言新特性n重載重載(Override)toString方法:方法: public String toString() switch (this) case Red: return Color.Red; case Green: return Color.Green; ca
16、se Blue: return Color.Blue; default: return Unknow Color; Java5語言新特性n在在Java 5.0之前的版本中,之前的版本中, Java程序并不是程序并不是類型安全的。類型安全的。List stringList = new ArrayList();stringList.add(abcde);String str = (String)stringList.get(0); n仍然可以把一個整型對象添加到這個隊列中,仍然可以把一個整型對象添加到這個隊列中, 例如:例如: stringList.add(new Integer(5);n在這種情
17、況下,從字符列表中獲取對象時,強在這種情況下,從字符列表中獲取對象時,強制類型轉(zhuǎn)換就會導(dǎo)致運行時異常。制類型轉(zhuǎn)換就會導(dǎo)致運行時異常。n范型是范型是Java邁向類型安全的一個重要步驟,使邁向類型安全的一個重要步驟,使用范型可以構(gòu)造出類型安全的代碼。用范型可以構(gòu)造出類型安全的代碼。Java5語言新特性n所謂范型是指類型參數(shù)化所謂范型是指類型參數(shù)化(parameterized types)。Java是一種強類型的語言,在是一種強類型的語言,在J2SE 1.4以及以前的版本中,我們在定義一個以及以前的版本中,我們在定義一個Java類的接口或者方法的時候,必須指定變量的類類的接口或者方法的時候,必須指定
18、變量的類型。在聲明范型類、接口或者函數(shù)時,定義變型。在聲明范型類、接口或者函數(shù)時,定義變量的時候不指定某些變量的具體類型,而是用量的時候不指定某些變量的具體類型,而是用一個類型參數(shù)代替。在使用這個類、接口或者一個類型參數(shù)代替。在使用這個類、接口或者方法的時候,這個類型參數(shù)由一個具體類型所方法的時候,這個類型參數(shù)由一個具體類型所代替。代替。Java5語言新特性public class GenList private T elements; private int size = 0; private int length = 0; public GenList(int size) elements
19、 = (T)new Objectsize; this.size = size; public T get(int i) if (i length) return elementsi; return null; public void add(T e) if (length size - 1) elementslength+ = e; Java5語言新特性n聲明范型接口:聲明范型接口:public interface GenInterface void func(T t);n聲明多個類型參數(shù)聲明多個類型參數(shù)public class GenMap Java5語言新特性n自動裝包:基本類型自動轉(zhuǎn)為包
20、裝類自動裝包:基本類型自動轉(zhuǎn)為包裝類(例如:例如:int Integer)。n自動拆包:包裝類自動轉(zhuǎn)為基本類型自動拆包:包裝類自動轉(zhuǎn)為基本類型(例如:例如:Integer int)。int a = 3;Collection c = new ArrayList();c.add(a); /自動轉(zhuǎn)換成自動轉(zhuǎn)換成Integer.Integer b = new Integer(2);c.add(b + 2);/這里這里Integer先自動轉(zhuǎn)換為先自動轉(zhuǎn)換為int進行進行加法運算,然后加法運算,然后int再次轉(zhuǎn)換為再次轉(zhuǎn)換為Integer Java5語言新特性n沒有靜態(tài)導(dǎo)入時沒有靜態(tài)導(dǎo)入時 Math.sq
21、rt(Math.pow(x, 2) + Math.pow(y, 2); n使用靜態(tài)導(dǎo)入時使用靜態(tài)導(dǎo)入時 import static java.lang.Math.*;sqrt(pow(x, 2) + pow(y, 2); Java5語言新特性public class TestFormat public static void main(String args) int a = 150000, b = 10; float c = 5.0101f, d = 3.14f; System.out.printf(%4d %4d%n, a, b); System.out.printf(%x %x%n, a
22、, b); System.out.printf(%3.2f %1.1f%n, c, d); System.out.printf(%1.3e %1.3e%n, c, d*100); Java5語言新特性輸出結(jié)果為:輸出結(jié)果為:150000 10249f0 a5.01 3.15.010e+00 3.140e+02Java5語言新特性nJava 5.0之前版本中的輸入:之前版本中的輸入: String input = JOptionPane.showInputDialog(prompt);int n = Integer.parseInt(input);double x = Double.parseD
23、ouble(input);s = input; n在在Java 5.0中的輸入:中的輸入: Scanner in = new Scanner(System.in);System.out.print(prompt);int n = in.nextInt();double x = in.nextDouble();String s = in.nextLine();Java5語言新特性n請問請問Java 5中的新語言特性有哪些?中的新語言特性有哪些?n請先閱讀下面一段使用范型的示例代碼并編譯運行。請先閱讀下面一段使用范型的示例代碼并編譯運行。然后思考在此例中運用范型與不運用范型的代碼不然后思考在此例中
24、運用范型與不運用范型的代碼不同之處。同之處。 class Example private T t; Example(T o) this.t = o; T getObj() return t; void ShowObject() System.out.println(對象的類型是:對象的類型是: + t.getClass().getName(); Java5語言新特性public class GenericsExample /* * param args */ public static void main(String args) / TODO Auto-generated method stub Example exampleInt=new Example1(100); exampleInt.ShowObjec
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 財務(wù)制度合同管理范例
- 公司汽車租賃協(xié)議合同
- 有關(guān)個人和企業(yè)借款合同
- 小區(qū)門口門面租賃合同
- 進口銷售合同
- 金融行業(yè)投資產(chǎn)品風(fēng)險提示合同
- 湖南環(huán)境生物職業(yè)技術(shù)學(xué)院《ntroductontoMarketng》2023-2024學(xué)年第二學(xué)期期末試卷
- 運城師范高等??茖W(xué)校《社會化閱讀》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海師范大學(xué)天華學(xué)院《展具設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 中山職業(yè)技術(shù)學(xué)院《工程流體學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024年注冊安全工程師考試題庫【含答案】
- 《書籍裝幀設(shè)計》 課件 項目2 書籍裝幀設(shè)計要素
- 妊娠期合并癥婦女的護理-妊娠合并心臟病的護理(婦產(chǎn)科護理課件)4EX
- 中職語文高教版基礎(chǔ)模塊上冊《風(fēng)景談》公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 汪小蘭有機化學(xué)課件第四版
- Unit1 My day 單元作業(yè)設(shè)計(素材)人教PEP版英語五年級下冊
- 贏的思考與態(tài)度課件
- 2024年2月國考海關(guān)面試題目及參考答案
- TZSA 158-2023 雙引擎分布式視頻處理器技術(shù)規(guī)范
- 2型糖尿病科普講座課件
- 《座社交恐懼癥》課件
評論
0/150
提交評論