Java5語言新特性課件_第1頁
Java5語言新特性課件_第2頁
Java5語言新特性課件_第3頁
Java5語言新特性課件_第4頁
Java5語言新特性課件_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Java5語言新特性 n(學(xué)時(shí)數(shù):學(xué)時(shí))Java5語言新特性n1了解了解java5.0新語言特性包括哪幾個(gè)方面。新語言特性包括哪幾個(gè)方面。n2了解了解java5.0中增強(qiáng)的中增強(qiáng)的for循環(huán)循環(huán) 。n3了解了解java5.0的注釋新特性的注釋新特性 。n4掌握枚舉掌握枚舉 。n5. 掌握范型掌握范型 。n6. 掌握類型自動(dòng)轉(zhuǎn)換掌握類型自動(dòng)轉(zhuǎn)換 。n7. 了解靜態(tài)導(dǎo)入了解靜態(tài)導(dǎo)入 n8. 了解格式化輸入與輸出了解格式化輸入與輸出 。 Java5語言新特性n1.1 新語言特性總覽新語言特性總覽 n1.2 增強(qiáng)的增強(qiáng)的for循環(huán)循環(huán) n1.3 注釋注釋 n1.4 枚舉枚舉 n1.5 范型范型 n1.

2、6 類型自動(dòng)轉(zhuǎn)換類型自動(dòng)轉(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表達(dá)式表達(dá)式 n1.2.2 局限性局限性 Java5語言新特性n1.3.1 注釋的作用注釋的作用 n1.3.2 用戶自定義標(biāo)簽用戶自定義標(biāo)簽 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 聲明范型接口和多個(gè)類型參聲明范型接口和多個(gè)類型參數(shù)數(shù) Java5語言新特性n1.6.1 類型自動(dòng)轉(zhuǎn)換類型自動(dòng)轉(zhuǎn)換 Java5語言新特性n1.7.1 靜態(tài)導(dǎo)入靜態(tài)導(dǎo)入 Java5語言新特性n1.8.1 格式化輸出格式化輸出 n1.8.2 格式化輸入格式化輸入 Java5語言新特性n時(shí)間:時(shí)間:2004年年10月月 n版本名稱不是版本名稱不是Java1.5而是而是Java 5.0的原因的原因 ?從從Java誕生至今已有誕生至今已有9年時(shí)間,而從有年時(shí)間,而從有J2SE算起也有算起也有5個(gè)年頭了;在這樣的背

4、境下,將該個(gè)年頭了;在這樣的背境下,將該版本號(hào)從版本號(hào)從1.5改為改為5.0可以更好的反映出新版的可以更好的反映出新版的Java技術(shù)的成熟度、穩(wěn)定性、可伸縮性、安全技術(shù)的成熟度、穩(wěn)定性、可伸縮性、安全性。性。 nJava 5.0的目標(biāo)的目標(biāo) :通過增強(qiáng):通過增強(qiáng)Java平臺(tái)的力量,平臺(tái)的力量,允許開發(fā)者更容易地使用,允許開發(fā)者更容易地使用,Java編程語言的這編程語言的這些改進(jìn)將吸引大量各種些改進(jìn)將吸引大量各種Java開發(fā)者開發(fā)者 。Java5語言新特性n范型范型 :添加編譯時(shí)類型來檢查您的代碼:添加編譯時(shí)類型來檢查您的代碼 ,使用范型來,使用范型來代替所有的類型轉(zhuǎn)換代替所有的類型轉(zhuǎn)換 。n加

5、強(qiáng)的加強(qiáng)的For循環(huán):在循環(huán):在Collection中使用循環(huán)來代替迭代中使用循環(huán)來代替迭代器器 。n自動(dòng)打包:無須手工打包和拆包自動(dòng)打包:無須手工打包和拆包(box and unbox)原原始類型始類型 。n枚舉:枚舉:Java開發(fā)者開發(fā)者 可以使用枚舉類可以使用枚舉類 。n變參:方法調(diào)用之中把變參當(dāng)作一系列獨(dú)立的參數(shù)變參:方法調(diào)用之中把變參當(dāng)作一系列獨(dú)立的參數(shù) 。n靜態(tài)導(dǎo)入:靜態(tài)倒入(靜態(tài)導(dǎo)入:靜態(tài)倒入(Static Import)特征允許您)特征允許您導(dǎo)入所有靜態(tài)類的成員到您的代碼中,并且可以通過導(dǎo)入所有靜態(tài)類的成員到您的代碼中,并且可以通過簡(jiǎn)短和非限制的名稱來引用這些常量和方法。簡(jiǎn)短和

6、非限制的名稱來引用這些常量和方法。 n評(píng)注評(píng)注 :提供了一個(gè)代碼運(yùn)行時(shí)可訪問的信息:提供了一個(gè)代碼運(yùn)行時(shí)可訪問的信息 。n國際化:國際化:Unicode 4.0的支持的支持 。n質(zhì)量:穩(wěn)定性、強(qiáng)壯性和兼容性質(zhì)量:穩(wěn)定性、強(qiáng)壯性和兼容性 Java5語言新特性n在循環(huán)中,初始化表達(dá)式只計(jì)算一次在循環(huán)中,初始化表達(dá)式只計(jì)算一次 未增強(qiáng)的未增強(qiáng)的For :int sum = 0;Integer numbers = computeNumbers();for (int i=0; i numbers.length ; i+) sum += numbersi;增強(qiáng)后的增強(qiáng)后的For: int sum = 0;

7、for ( int number: computeNumbers() ) sum += number; Java5語言新特性n不可以在迭代期間訪問迭代器或下標(biāo)。不可以在迭代期間訪問迭代器或下標(biāo)。例子例子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()方法,不過用戶可能一時(shí)疏方法,不過用戶可能一時(shí)疏忽把它寫成了忽把它寫成了fob()。 錯(cuò)誤提示:錯(cuò)誤提示: Child.java:3: method does not override a method from its superclass Override 1 errorJava5語言新特性用戶自定義標(biāo)簽用戶自定義標(biāo)簽 :package tiger.annotation;/* * 用戶自定義標(biāo)簽用戶自定義標(biāo)簽MyTag */public interface MyTag /定義了一個(gè)定義了一個(gè)tag之后,用戶就可以在任何之后,

10、用戶就可以在任何java文件中使用這個(gè)文件中使用這個(gè)tag了:了:import tiger.annotation.MyTag;public class TagTest MyTag public void testTag() /注釋類型還可以有成員變量:注釋類型還可以有成員變量:package tiger.annotation;/* * 用戶自定義標(biāo)簽,帶有成員變量的用戶自定義標(biāo)簽,帶有成員變量的MyTag */public interface MyTag String name(); int age();Java5語言新特性用戶可以這么使用這個(gè)標(biāo)簽:用戶可以這么使用這個(gè)標(biāo)簽: 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默認(rèn)實(shí)現(xiàn)了默認(rèn)實(shí)現(xiàn)了parable接口。接口。 nenum重載了重載了toString方法方法nvalueOf方法,這個(gè)方法和方法,這個(gè)方法和toString方法是相方法是相對(duì)應(yīng)的。對(duì)應(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; /定義一個(gè)變量表示枚舉值的數(shù)目。定義一個(gè)變量表示枚舉值的數(shù)目。 private static int number = Color.values().length ; /* * 隨機(jī)返回一個(gè)枚舉值隨機(jī)返回一個(gè)枚舉值 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仍然可以把一個(gè)整型對(duì)象添加到這個(gè)隊(duì)列中,仍然可以把一個(gè)整型對(duì)象添加到這個(gè)隊(duì)列中, 例如:例如: stringList.add(new Integer(5);n在這種情

17、況下,從字符列表中獲取對(duì)象時(shí),強(qiáng)在這種情況下,從字符列表中獲取對(duì)象時(shí),強(qiáng)制類型轉(zhuǎn)換就會(huì)導(dǎo)致運(yùn)行時(shí)異常。制類型轉(zhuǎn)換就會(huì)導(dǎo)致運(yùn)行時(shí)異常。n范型是范型是Java邁向類型安全的一個(gè)重要步驟,使邁向類型安全的一個(gè)重要步驟,使用范型可以構(gòu)造出類型安全的代碼。用范型可以構(gòu)造出類型安全的代碼。Java5語言新特性n所謂范型是指類型參數(shù)化所謂范型是指類型參數(shù)化(parameterized types)。Java是一種強(qiáng)類型的語言,在是一種強(qiáng)類型的語言,在J2SE 1.4以及以前的版本中,我們?cè)诙x一個(gè)以及以前的版本中,我們?cè)诙x一個(gè)Java類的接口或者方法的時(shí)候,必須指定變量的類類的接口或者方法的時(shí)候,必須指定

18、變量的類型。在聲明范型類、接口或者函數(shù)時(shí),定義變型。在聲明范型類、接口或者函數(shù)時(shí),定義變量的時(shí)候不指定某些變量的具體類型,而是用量的時(shí)候不指定某些變量的具體類型,而是用一個(gè)類型參數(shù)代替。在使用這個(gè)類、接口或者一個(gè)類型參數(shù)代替。在使用這個(gè)類、接口或者方法的時(shí)候,這個(gè)類型參數(shù)由一個(gè)具體類型所方法的時(shí)候,這個(gè)類型參數(shù)由一個(gè)具體類型所代替。代替。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聲明多個(gè)類型參數(shù)聲明多個(gè)類型參數(shù)public class GenMap Java5語言新特性n自動(dòng)裝包:基本類型自動(dòng)轉(zhuǎn)為包

20、裝類自動(dòng)裝包:基本類型自動(dòng)轉(zhuǎn)為包裝類(例如:例如:int Integer)。n自動(dòng)拆包:包裝類自動(dòng)轉(zhuǎn)為基本類型自動(dòng)拆包:包裝類自動(dòng)轉(zhuǎn)為基本類型(例如:例如:Integer int)。int a = 3;Collection c = new ArrayList();c.add(a); /自動(dòng)轉(zhuǎn)換成自動(dòng)轉(zhuǎn)換成Integer.Integer b = new Integer(2);c.add(b + 2);/這里這里Integer先自動(dòng)轉(zhuǎn)換為先自動(dòng)轉(zhuǎn)換為int進(jìn)行進(jìn)行加法運(yùn)算,然后加法運(yùn)算,然后int再次轉(zhuǎn)換為再次轉(zhuǎn)換為Integer Java5語言新特性n沒有靜態(tài)導(dǎo)入時(shí)沒有靜態(tài)導(dǎo)入時(shí) Math.sq

21、rt(Math.pow(x, 2) + Math.pow(y, 2); n使用靜態(tài)導(dǎo)入時(shí)使用靜態(tài)導(dǎo)入時(shí) 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請(qǐng)問請(qǐng)問Java 5中的新語言特性有哪些?中的新語言特性有哪些?n請(qǐng)先閱讀下面一段使用范型的示例代碼并編譯運(yùn)行。請(qǐng)先閱讀下面一段使用范型的示例代碼并編譯運(yùn)行。然后思考在此例中運(yùn)用范型與不運(yùn)用范型的代碼不然后思考在此例中

24、運(yùn)用范型與不運(yùn)用范型的代碼不同之處。同之處。 class Example private T t; Example(T o) this.t = o; T getObj() return t; void ShowObject() System.out.println(對(duì)象的類型是:對(duì)象的類型是: + 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等.壓縮文件請(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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論