-
- 素材大。
- 3 MB
- 素材授權(quán):
- 免費下載
- 素材格式:
- .ppt
- 素材上傳:
- lipeier
- 上傳時間:
- 2020-01-03
- 素材編號:
- 248779
- 素材類別:
- 課件PPT
-
素材預(yù)覽
這是java基礎(chǔ)加強ppt,包括了Eclipse vs MyEclipse簡介和使用,靜態(tài)導(dǎo)入,自動裝箱/拆箱,增強for循環(huán),枚舉類,Class類,利用框架操作JavaBean的屬性,泛型方法的產(chǎn)生等內(nèi)容,歡迎點擊下載。
java基礎(chǔ)加強ppt是由紅軟PPT免費下載網(wǎng)推薦的一款課件PPT類型的PowerPoint.
Java基礎(chǔ)加強(上) Eclipse vs MyEclipse簡介和使用 IBM2001/擴展性/Java編寫開源/跨語言/跨平臺 工作空間(workspace)、工程(project) 在eclipse下Java程序的編寫和運行,及java運行環(huán)境的配置。 快捷鍵的配置,常用快捷鍵: 內(nèi)容提示:Alt + / 快速修復(fù):Ctrl + 1 導(dǎo)包:Ctrl + shift + O 格式化代碼塊:Ctrl + Shift + F 代碼位置調(diào)換:Alt+上下鍵 添加/除去單行注釋 Ctrl+/ 添加/除去多行注釋 Ctrl+Shift+/和Ctrl+Shift+\ 打印語句快速提示:Syso+Alt+/ 程序的調(diào)試Debug模式 Junit使用 JDK 5.0 新特性 JDK5中新增了很多新的java特性,利用這些新語法可以幫助開發(fā)人員編寫出更加高效、清晰,安全的代碼。 靜態(tài)導(dǎo)入 自動裝箱/拆箱 增強for循環(huán) 可變參數(shù) 枚舉 反射 泛型 靜態(tài)導(dǎo)入 JDK 1.5 增加的靜態(tài)導(dǎo)入語法用于導(dǎo)入類的某個靜態(tài)屬性或方法。使用靜態(tài)導(dǎo)入可以簡化程序?qū)︻愳o態(tài)屬性和方法的調(diào)用。 語法: import static 包名.類名.靜態(tài)屬性|靜態(tài)方法|* 例如: import static java.lang.System.out import static java.lang.Math.* 自動裝箱/拆箱 JDK5.0的語法允許開發(fā)人員把一個基本數(shù)據(jù)類型直接賦給對應(yīng)的包裝類變量, 或者賦給 Object 類型的變量,這個過程稱之為自動裝箱。 自動拆箱與自動裝箱與之相反,即把包裝類對象直接賦給一個對應(yīng)的基本類型變量。 典型應(yīng)用: List list = new ArrayList(); list.add(1); int j = (Integer)list.get(0); 增強for循環(huán) 引入增強for循環(huán)的原因:在JDK5以前的版本中,遍歷數(shù)組或集合中的元素,需先獲得數(shù)組的長度或集合的迭代器,比較麻煩! 因此JDK5中定義了一種新的語法——增強for循環(huán),以簡化此類操作。增強for循環(huán)只能用在數(shù)組、或?qū)崿F(xiàn)Iterator接口的集合類上 語法格式: for(變量類型 變量 :需迭代的數(shù)組或集合){} 小細節(jié):向集合中取元素時同時加元素,需要 使用迭代器來完成。 增強for循環(huán) 使用增強for循環(huán)的幾個注意事項(以下程序的輸出結(jié)果?) 可變參數(shù) 測試JDK中具有可變參數(shù)的類Arrays.asList()方法。分別傳多個參、傳數(shù)組,傳數(shù)組又傳參的情況。 注意:傳入基本數(shù)據(jù)類型數(shù)組的問題。 從JDK 5開始, Java 允許為方法定義長度可變的參數(shù)。語法: public void foo(int … args){ } 注意事項: 調(diào)用可變參數(shù)的方法時, 編譯器將自動創(chuàng)建一個數(shù)組保存?zhèn)鬟f給方法的可變參數(shù),因此,程序員可以在方法體中以數(shù)組的形式訪問可變參數(shù) 可變參數(shù)只能處于參數(shù)列表的最后, 所以一個方法最多只能有一個可變參數(shù) 枚舉類 為什么需要枚舉? 一些方法在運行時,它需要的數(shù)據(jù)不能是任意的,而必須是一定范圍內(nèi)的值,此類問題在JDK5以前采用自定義帶有枚舉功能的類解決,Java5以后可以直接使用枚舉予以解決。 JDK 5新增的 enum 關(guān)鍵字用于定義一個枚舉類。 枚舉類 枚舉類具有如下特性: 枚舉類也是一種特殊形式的Java類。 枚舉類中聲明的每一個枚舉值代表枚舉類的一個實例對象。 與java中的普通類一樣,在聲明枚舉類時,也可以聲明屬性、方法和構(gòu)造函數(shù),但枚舉類的構(gòu)造函數(shù)必須為私有的(這點不難理解)。 枚舉類也可以實現(xiàn)接口、或繼承抽象類。 JDK5中擴展了switch語句,它除了可以接收int, byte, char, short外,還可以接收一個枚舉類型。 若枚舉類只有一個枚舉值,則可以當(dāng)作單態(tài)設(shè)計模式使用。 練習(xí):請編寫一個關(guān)于星期幾的枚舉WeekDay,要求: 枚舉值:Mon,Tue,Wed,Thu,F(xiàn)ri,Sat,Sun 該枚舉要有一個方法,調(diào)用該方法返回中文格式的星期。 枚舉類 Java中聲明的枚舉類,均是java.lang.Enum類的孩子,它繼承了Enum類的所有方法。常用方法: name() ordinal() valueOf(Class enumClass, String name) values() 此方法雖然在JDK文檔中查找不到,但每個枚舉類都具有該方法,它遍歷枚舉類的所有枚舉值非常方便。 反射 什么是反射? 反射就是把Java類中的各種成分映射成一個個的java對象。例如,一個類有:成員變量,方法,構(gòu)造方法,包等等信息,利用反射技術(shù)可以對一個類進行解剖,把各個組成部分映射成一個個對象。 反射用在哪里?框架 學(xué)習(xí)反射應(yīng)該掌握些什么? Class類 Class類用于表示.class文件,畫圖演示一個對象的創(chuàng)建過程。 如何得到某個class文件對應(yīng)的class對象。 類名.class 對象.getClass() Class.forName(“類名”) 總之,只要是在源程序中出現(xiàn)的類型,都有各自的Class實例對象,例如,int.class,int[].class,void.class… Constructor類 Constructor類的實例對象代表類的一個構(gòu)造方法。 得到某個類所有的構(gòu)造方法,例: Constructor [] constructors= Class.forName("java.lang.String").getConstructors(); 得到某一個構(gòu)造方法,例: Constructor constructor = Class.forName(“java.lang.String”).getConstructor(StringBuffer.class); 利用構(gòu)造方法創(chuàng)建實例對象: String str = (String)constructor.newInstance(“abc”); Class類的newInstance()方法也可創(chuàng)建類的實例,其內(nèi)部工作原理是先得無參的構(gòu)造方法,再用構(gòu)造方法創(chuàng)建實例對象。 String obj =(String)Class.forName("java.lang.String").newInstance(); 反射公共,私有和保護的構(gòu)造方法 // public Person() @Test public void test1() throws Exception { Class clazz = Class.forName("cn.itcast.java.reflect.Person"); Constructor c = clazz.getConstructor(null); Person p = (Person) c.newInstance(null); } // protected Person()或private Person() @Test public void test2() throws Exception { Class clazz = Class.forName("cn.itcast.java.reflect.Person"); Constructor c = clazz.getDeclaredConstructor(null); c.setAccessible(true); Person p = (Person) c.newInstance(null); } Field類 Field類代表某個類中的一個成員變量 問題:得到的Field對象是對應(yīng)到類上面的成員變量,還是對應(yīng)到對象上的成員變量?類只有一個,而該類的實例對象有多個,如果是與對象關(guān)聯(lián),那關(guān)聯(lián)的是哪個對象呢?所以字段fieldX 代表的是x的定義,而不是具體的x變量。(注意訪問權(quán)限的問題) Method類 Method類代表某個類中的一個成員方法 得到類中的某一個方法: 例子: Method charAt = Class.forName("java.lang.String").getMethod("charAt", int.class); 調(diào)用方法: 通常方式:System.out.println(str.charAt(1)); 反射方式: System.out.println(charAt.invoke(str, 1)); 如果傳遞給Method對象的invoke()方法的第一個參數(shù)為null,這有著什么樣的意義呢?說明該Method對象對應(yīng)的是一個靜態(tài)方法! jdk1.4和jdk1.5的invoke方法的區(qū)別: Jdk1.5:public Object invoke(Object obj,Object... args) Jdk1.4:public Object invoke(Object obj,Object[] args),即按jdk1.4的語法,需要將一個數(shù)組作為參數(shù)傳遞給invoke方法時,數(shù)組中的每個元素分別對應(yīng)被調(diào)用方法中的一個參數(shù),所以,調(diào)用charAt方法的代碼也可以用Jdk1.4改寫為 charAt.invoke(“str”, new Object[]{1})形式。 用反射方式執(zhí)行某個類中的main方法 問題: 啟動Java程序的main方法的參數(shù)是一個字符串?dāng)?shù)組,即public static void main(String[] args),通過反射方式來調(diào)用這個main方法時,如何為invoke方法傳遞參數(shù)呢?按jdk1.5的語法,整個數(shù)組是一個參數(shù),而按jdk1.4的語法,數(shù)組中的每個元素對應(yīng)一個參數(shù),當(dāng)把一個字符串?dāng)?shù)組作為參數(shù)傳遞給invoke方法時,javac會到底按照哪種語法進行處理呢?jdk1.5肯定要兼容jdk1.4的語法,會按jdk1.4的語法進行處理,即把數(shù)組拆分成為若干個單獨的參數(shù)。所以,在給main方法傳遞參數(shù)時,不能使用代碼mainMethod.invoke(null,new String[]{“xxx”}),javac只把它當(dāng)作jdk1.4的語法進行理解,而不把它當(dāng)作jdk1.5的語法解釋,因此會出現(xiàn)參數(shù)類型不對的問題。 解決辦法: mainMethod.invoke(null,new Object[]{new String[]{"xxx"}}); mainMethod.invoke(null,(Object)new String[]{“xxx”}); ,編譯器會作特殊處理,編譯時不把參數(shù)當(dāng)作數(shù)組看待,也就不會將數(shù)組拆分成若干個參數(shù)了 內(nèi)省(Introspector) — JavaBean 什么是JavaBean和字段/屬性的讀寫方法? 訪問JavaBean屬性的兩種方式: 直接調(diào)用bean的setXXX或getXXX方法。 通過內(nèi)省技術(shù)訪問(java.beans包提供了內(nèi)省的API),內(nèi)省技術(shù)訪問也提供了兩種方式。 通過PropertyDescriptor類操作Bean的屬性 通過Introspector類獲得Bean對象的 BeanInfo,然后通過 BeanInfo 來獲取屬性的描述器( PropertyDescriptor ),通過這個屬性描述器就可以獲取某個屬性對應(yīng)的 getter/setter 方法,然后通過反射機制來調(diào)用這些方法。 利用內(nèi)省操作JavaBean的屬性 public void test1() throws Exception{ Student s = new Student(); PropertyDescriptor pd = new PropertyDescriptor("name",Student.class); Method m = pd.getWriteMethod(); m.invoke(s,"jack"); //new Student().setName("jack") m = pd.getReadMethod(); String name = (String)m.invoke(s,null); //new Student().getName() System.out.println("name="+name); } public void test2() throws Exception{ BeanInfo bi = Introspector.getBeanInfo(Student.class); PropertyDescriptor[] pds = bi.getPropertyDescriptors(); for(PropertyDescriptor pd : pds){ System.out.println(pd.getName()); } } 框架—beanutils工具包 Apache組織開發(fā)了一套用于操作JavaBean的API,這套API考慮到了很多實際開發(fā)中的應(yīng)用場景,因此在實際開發(fā)中很多程序員使用這套API操作JavaBean,以簡化程序代碼的編寫。 Beanutils工具包的常用類: BeanUtils ConvertUtils.register(Converter convert, Class clazz) 自定義轉(zhuǎn)換器 內(nèi)置轉(zhuǎn)換器 利用框架操作JavaBean的屬性 ConvertUtils.register( new DateLocaleConverter(),Date.class); Student s = new Student(); BeanUtils bu = new BeanUtils(); bu.setProperty(s, "name", "jack"); bu.setProperty(s, "age", “31"); bu.setProperty(s, "birthday", "1980-7-23"); System.out.println(bu.getProperty(s, "name")); System.out.println(bu.getProperty(s, "age")); System.out.println(bu.getProperty(s, "birthday")); 泛型(Generic)—泛形的作用 JDK5以前,對象保存到集合中就會失去其特性,取出時通常要程序員手工進行類型的強制轉(zhuǎn)換,這樣不可避免就會引發(fā)程序的一些安全性問題。例如: 泛型(Generic) —泛形的作用 JDK5中的泛形允許程序員在編寫集合代碼時,就限制集合的處理類型,從而把原來程序運行時可能發(fā)生問題,轉(zhuǎn)變?yōu)榫幾g時的問題,以此提高程序的可讀性和穩(wěn)定性(尤其在大型程序中更為突出)。 注意:泛型是提供給javac編譯器使用的,它用于限定集合的輸入類型,讓編譯器在源代碼級別上,即擋住向集合中插入非法數(shù)據(jù)。但編譯器編譯完帶有泛形的java程序后,生成的class文件中將不再帶有泛形信息,以此使程序運行效率不受到影響,這個過程稱之為“擦除”。 泛形的基本術(shù)語,以ArrayList
為例:<>念著typeof ArrayList 中的E稱為類型參數(shù)變量 ArrayList 中的Integer稱為實際類型參數(shù) 整個稱為ArrayList 泛型類型 整個ArrayList 稱為參數(shù)化的類型ParameterizedType 泛型典型應(yīng)用 使用迭代器迭代泛形集合中的元素。 使用增強for循環(huán)迭代泛形集合中的元素。 存取HashMap中的元素。 使用泛形時的幾個常見問題: 使用泛形時,泛形類型須為引用類型,不能是基本數(shù)據(jù)類型 ArrayList list = new ArrayList 孫鑫java ppt:這是孫鑫java ppt,包括了Java的起源,我們?yōu)槭裁匆肑ava,Java跨平臺的原理,Java開發(fā)工具包(JDK)的下載,面向?qū)ο蟪绦蛟O(shè)計,一個簡單的例子等內(nèi)容,歡迎點擊下載。
張孝祥java基礎(chǔ)ppt:這是張孝祥java基礎(chǔ)ppt,包括了配套書籍,Java郵件開發(fā)介紹,課程目標,為什么要學(xué)習(xí)郵件開發(fā),如何學(xué)習(xí)郵件開發(fā),電子郵件的一些基本常識,郵件內(nèi)容的組織結(jié)構(gòu)等內(nèi)容,歡迎點擊下載。
javamail ppt:這是javamail ppt,包括了JavaMail基礎(chǔ)知識,發(fā)送簡單郵件,發(fā)送SMTP身份認證的郵件,接收郵件,郵件附件的處理等內(nèi)容,歡迎點擊下載。