版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java2 SE講解Java基礎(chǔ)1、語法基礎(chǔ)2、面向?qū)ο?、JDBC 4、異常課程內(nèi)容OOP&Java Base面向?qū)ο缶幊?Object Oriented Programming,OOP,面向?qū)ο蟪绦蛟O(shè)計(jì)) 3Java學(xué)習(xí)路線Java SE應(yīng)用程序設(shè)計(jì):面向?qū)ο螅悾^承,接口,多態(tài),抽象與封裝)異常處理,I/O編程,集合框架,GUI程序設(shè)計(jì),多線程編程數(shù)據(jù)庫的學(xué)習(xí):可以學(xué)習(xí)Oracle數(shù)據(jù)庫安裝配置、基本管理及開發(fā),使用OEM/SQL Plus,標(biāo)準(zhǔn)SQL,DML,DDL,函數(shù),事務(wù),約束,序列,索引,視圖,數(shù)據(jù)庫設(shè)計(jì),MySql,SQL Server的基本使用。Java Web應(yīng)用開發(fā):
2、JDBC,JSP,Servlet,JavaBean,HTML,JavaScript,Session/cookie,MVC設(shè)計(jì)模式,Tomcat,Eclipse+MyEclipse. Java企業(yè)級應(yīng)用開發(fā): Struts,Hibernate,XML,J2EE/EJB,UML,Spring,AJAX,Jquery,Json45Java 語言的發(fā)展歷史Java 已經(jīng)成為當(dāng)今最為流行的軟件開發(fā)語言技術(shù)之一。Java的平臺無關(guān)性Java是一種既面向?qū)ο笥挚梢钥缙脚_的語言,即:編寫一次,隨處運(yùn)行(Write once, Run anywhere);Java不僅適用于單機(jī)應(yīng)用程序和基于網(wǎng)絡(luò)的程序,也可用于
3、創(chuàng)建消費(fèi)類設(shè)備的附件程序,如移動電話、掌上設(shè)備等。6Java源程序代碼WindowsLinuxSolarisJVMJava虛擬機(jī)Java字節(jié)碼(可跨平臺)編譯運(yùn)行MAC OSJava虛擬機(jī)Java虛擬機(jī)(Java Virtual Machine)是可運(yùn)行Java字節(jié)碼的虛擬計(jì)算機(jī)系統(tǒng);使用Java語言編寫的程序,實(shí)際上是運(yùn)行在JVM之上,而不是運(yùn)行在操作系統(tǒng)上;它有一個解釋器組件,可以實(shí)現(xiàn)Java字節(jié)碼和計(jì)算機(jī)操作系統(tǒng)之間的通信。7用戶USER字節(jié)碼程序JVM (Java 虛擬機(jī))操作系統(tǒng)硬 件Java虛擬機(jī)的運(yùn)行過程8JIT代碼生成器.java源代碼文件.class字節(jié)碼文件編譯時運(yùn)行時硬件
4、類加載器字節(jié)碼校驗(yàn)器解釋器Java發(fā)展史95年sun發(fā)布jdk1.098年jdk1.2后續(xù)jdk1.3、1.4、1.5目前jdk1.6、1.7現(xiàn)在SUN已推出 Java 2 Platform Micro Edition (Java 2 ME) Java 2 Platform Standard Edition (Java 2 SE) Java 2 Platform Enterprise Edition (Java 2 EE)JDK目錄src.zip:核心API所有類的源文件bin :包含編譯器,解釋器等可執(zhí)行文件Demo:包含源代碼的程序示例include:用于本地方法的文件jre:Java運(yùn)行
5、環(huán)境lib:Java類庫Java開發(fā)環(huán)境的下載、安裝、配置下載:安裝(windows環(huán)境下)配置環(huán)境變量:path驗(yàn)證:Java versionJavac 編譯源文件Java 執(zhí)行文件編寫第一個Java文件:HelloWorld.java第一個Java Application應(yīng)用程序打開記事本,新建一個文本文件,將文件名改為Hello.java,在文件中鍵入如下內(nèi)容并保存:public class Hello public static void main(String args) System.out.println(Hello world!); Java源程序擴(kuò)展名為.java的源文件使用
6、記事本進(jìn)行編輯使用javac編譯器編譯源文件接下來需要將源程序進(jìn)行編譯;進(jìn)入命令提示行,切換到源文件所在的目錄,執(zhí)行javac命令,使用javac編譯器編譯源文件;javac命令的格式是:javac 完整的源文件名切換到源文件所在的目錄使用javac命令編譯源文件光標(biāo)閃爍表示語法無誤,順利通過編譯.class(字節(jié)碼)文件順利通過編譯后將生成一個擴(kuò)展名為.class的字節(jié)碼文件(類描述文件)。擴(kuò)展名為.java的源文件通過編譯后生成的擴(kuò)展名為.class的字節(jié)碼文件使用java解釋器運(yùn)行字節(jié)碼文件進(jìn)入命令提示行,在字節(jié)碼文件所在的目錄下,執(zhí)行java命令,使用java解釋器運(yùn)行字節(jié)碼文件;ja
7、va命令的格式是:java 類名稱請注意:這里只需要類名稱,而不是帶擴(kuò)展名的文件名。執(zhí)行java命令運(yùn)行字節(jié)碼文件程序運(yùn)行效果分析程序關(guān)鍵字class用來定義一個類,Hello是類的名稱;在Java程序中,所有的語句都必須放在某個類中;整個類及其所有成員都包含在一對花括號中(即和之間),它們標(biāo)志著類定義塊的開始和結(jié)束。定義類的一般語法:class 類名分析程序3-2程序必須從main函數(shù)開始執(zhí)行;關(guān)鍵字public是訪問修飾符,用來控制類成員的可見范圍及作用域;關(guān)鍵字static允許在不創(chuàng)建類的實(shí)例的情況下,調(diào)用main函數(shù);關(guān)鍵字void用來說明main函數(shù)是沒有返回值的;args是字符串?dāng)?shù)
8、組,用來從命令行接收參數(shù);main函數(shù)的一般形式如下:public static void main(String args)分析程序String是字符串類型的數(shù)組;在Java中,類名稱一般首字母大寫;使用System.out.println()將信息輸出到控制臺上,即打印出來。 常用Java 命令 編譯一個java源文件 $javac 運(yùn)行java可運(yùn)行文件 $java -options class args. 生成java注釋文檔 $javadoc options packagenames sourcefiles files例:javadoc -d D:javados -sourcepat
9、h D:java abstractMoreType.java javadoc -d c:doc -sourcepath c:src -subpackages com.liigo(遞歸所有com.liigo子包里的java文件) 生成一個jar包 $ jar ctxuvfm0Mi jar-file manifest-file -C directory files .例:jar -cvf aa.jar -C news . (把news文件夾里的文件整個打包)J2SE基礎(chǔ)語法標(biāo)識符數(shù)據(jù)類型數(shù)據(jù)類型的轉(zhuǎn)換(主講四類八種)運(yùn)算符條件語句、循環(huán)語句:if/for/while/dowhile()/break
10、-continue/switch標(biāo)識符命名規(guī)范 Java語言中,為各種變量、方法和類等起的名字稱為標(biāo)識(identifier)。 Java標(biāo)識符的命名規(guī)則:應(yīng)以字母、下劃線(_)、美元符($) 、數(shù)字組成,但不能以數(shù)字開頭.Java標(biāo)識符大小寫敏感,長度無限制 不能與關(guān)鍵字同名Java的基礎(chǔ)類型及常量Java的八種基礎(chǔ)類型:整型:byte、short、int(默認(rèn))、long字符型:char浮點(diǎn)型:float、double (默認(rèn))布爾型:boolean(一般用于程序的流程控制)注:Java采用Unicode編碼(全球語言統(tǒng)一編碼),每個字符占兩個字節(jié),因此一個Char類型的變量可以存放一個漢
11、字(一個漢字占兩個字節(jié))Java的基礎(chǔ)類型及常量 長度 表示范圍byte 1字節(jié),8位 -2727-1short 2字節(jié),16位 -215215-1int 4字節(jié),32位 -231231-1long 8字節(jié),64位 -263263-1float 4字節(jié),32位 大約為+/- 3.403E38double 8字節(jié) 64位 大約+/-1.798E308基本數(shù)據(jù)類型轉(zhuǎn)換boolean類型不可轉(zhuǎn)換為其他類型。整型,字符型,浮點(diǎn)型的數(shù)據(jù)在混合運(yùn)算中相互轉(zhuǎn)換遵循如下原則:容量小的類型自動轉(zhuǎn)換為容量大的,數(shù)據(jù)類型按容量大小排序如下:byte、short、char-int-long-float-doubleb
12、ypt、short、char三者之間不互相轉(zhuǎn)換,三者參與運(yùn)算時先轉(zhuǎn)換為int類型容量大的在轉(zhuǎn)換為容量小的時候要加強(qiáng)制轉(zhuǎn)換符,但可能造成精度降低或溢出浮點(diǎn)型常量默認(rèn)值為double類型,整型常量默認(rèn)值為int類型成員變量、局部變量、變量作用域在Java中,變量一旦聲明,就應(yīng)對其進(jìn)行初始化TestConvert.java基本數(shù)據(jù)類型轉(zhuǎn)換 int i = 1,j; float f1 = 0.1; float f2 = 123; long l1 = 12345678; long l2 = 8888888888; double d1 = 2e20,d2 = 20; byte b1 = 1,b2 = 2,
13、 b3 = 129; j = j + 10; i = i / 10; i = i * 0.1; byte b = b1 - b2; float f3 = f1 + f2; float f4 = f1 + f2 * 0.1; double d = d1 * i + j; float f = (float)(d1 * 5 + d2);Java數(shù)據(jù)類型劃分圖數(shù)據(jù)類型基本數(shù)據(jù)類型引用數(shù)據(jù)類型類:class接口:interface浮點(diǎn)型:float、double整型:byte、short、int、long布爾型:boolean字符型:char數(shù)值型數(shù)組運(yùn)算符:operatorJava語言支持的運(yùn)算符:算
14、術(shù)運(yùn)算符:+,-,*,/,%,+,-關(guān)系運(yùn)算符:,=,基本不用賦值運(yùn)算符:=擴(kuò)展賦值運(yùn)算符:+=,-=,*=,/=字符串連接運(yùn)算符:+ 注:+(-)在前時先計(jì)算后取值在后時先取值后計(jì)算int x = 2;System.out.println(1 + +x + 2 + x); ?x = 2;System.out.println(1 + x+ + 2 + x); ?邏輯運(yùn)算符ab!aa&ba|baba&ba|btruetruefalsetruetruefalsetruetruetruefalsefalsefalsetruetruefalseTruefalsetruetruefalsetruetru
15、efalsetruefalsefalsetruefalsefalsefalsefalsefalse邏輯運(yùn)算符:【! 邏輯非】【& 邏輯與】【| 邏輯或】【 邏輯異與】【& 短路與】【| 短路或】public static void main(String args)boolean a = true, b = false, c;c = !a;System.out.println(c);c = ab;System.out.println(c);c = a|b;System.out.println(c);c = a&b;System.out.println(c);c = a|b;System.out
16、.println(c);c = a&b;System.out.println(c);”“邏輯異與:相同就為false,不同則為true|和|區(qū)別?&和&區(qū)別?位運(yùn)算符(一)移位運(yùn)算符:“ 右移”;“ 無符號右移”例子:-53=-11111 1111 1111 1111 1111 1111 1111 10111111 1111 1111 1111 1111 1111 1111 1111其結(jié)果與 Math.floor(double)-5/(2*2*2) 完全相同。-53=00000 0000 0000 0000 0000 0000 0000 01010000 0000 0000 0000 0000
17、 0000 0000 0000其結(jié)果與 5/(2*2*2) 完全相同。53=536870911 1111 1111 1111 1111 1111 1111 1111 10110001 1111 1111 1111 1111 1111 1111 1111無論正數(shù)、負(fù)數(shù),它們的右移、左移、無符號右移 32 位都是其本身,比如 -532=-5、-532=-5。一個有趣的現(xiàn)象是,把 1 左移 31 位再右移 31 位,其結(jié)果為 -1。0000 0000 0000 0000 0000 0000 0000 00011000 0000 0000 0000 0000 0000 0000 00001111 11
18、11 1111 1111 1111 1111 1111 1111位運(yùn)算符(二)位邏輯運(yùn)算符:& 與;| 或; 非(也叫做求反); 異或 “& 與”、“| 或”、“ 非”是基本邏輯運(yùn)算,由此可以演變出“與非”、“或非”、“與或非”復(fù)合邏輯運(yùn)算。“ 異或”是一種特殊的邏輯運(yùn)算,對它求反可以得到“同或”,所以“同或”邏輯也叫“異或非”邏輯。例子:5&3=10000 0000 0000 0000 0000 0000 0000 01010000 0000 0000 0000 0000 0000 0000 00110000 0000 0000 0000 0000 0000 0000 0001-5&3=31
19、111 1111 1111 1111 1111 1111 1111 10110000 0000 0000 0000 0000 0000 0000 00110000 0000 0000 0000 0000 0000 0000 00115|3=70000 0000 0000 0000 0000 0000 0000 01010000 0000 0000 0000 0000 0000 0000 00110000 0000 0000 0000 0000 0000 0000 0111-5|3=-51111 1111 1111 1111 1111 1111 1111 10110000 0000 0000 0
20、000 0000 0000 0000 00111111 1111 1111 1111 1111 1111 1111 10115=-60000 0000 0000 0000 0000 0000 0000 01011111 1111 1111 1111 1111 1111 1111 1010位運(yùn)算符(三)位邏輯運(yùn)算符:& 與;| 或; 非(也叫做求反); 異或 “& 與”、“| 或”、“ 非”是基本邏輯運(yùn)算,由此可以演變出“與非”、“或非”、“與或非”復(fù)合邏輯運(yùn)算?!?異或”是一種特殊的邏輯運(yùn)算,對它求反可以得到“同或”,所以“同或”邏輯也叫“異或非”邏輯。例子:-5=41111 1111 111
21、1 1111 1111 1111 1111 10110000 0000 0000 0000 0000 0000 0000 010053=60000 0000 0000 0000 0000 0000 0000 01010000 0000 0000 0000 0000 0000 0000 00110000 0000 0000 0000 0000 0000 0000 0110-53=-81111 1111 1111 1111 1111 1111 1111 10110000 0000 0000 0000 0000 0000 0000 00111111 1111 1111 1111 1111 1111
22、1111 1000字符串連接符“+”除用于加法運(yùn)算外,還可以用于字符串的連接int i = 55 + 21;String s = “wang” + “hz”;“+”運(yùn)算符兩側(cè)的操作數(shù)只要有一個字符串(String)類型,系統(tǒng)就會自動將另一個操作數(shù)轉(zhuǎn)換為字符串類型,然后連接:int i = 12;System.out.println(“wanghz” + i); 輸出結(jié)果:wanghz12String s1 = 10+2+”qing”String s2 = “qing”+ 10+2 s1和s2的輸出結(jié)果會是什么?注:System.out.println(value);中的value無論是何類型,
23、都會先轉(zhuǎn)為字符型,然后打印if條件語句條件語句格式: if if else if else if if else if else if else只有一句要執(zhí)行的語句時 可以省略但是建議不要去 if(表達(dá)式1) 語句塊1 else if(表達(dá)式2) 語句塊2 else 語句塊3 表達(dá)式語句塊falsetrueTestIf.java循環(huán)控制語句For循環(huán)控制語句格式: for(表達(dá)式1;boolean類型的表達(dá)式2;表達(dá)式3) 語句塊 注:continue和break區(qū)別?表達(dá)式1表達(dá)式2語句塊true表達(dá)式3falseTestFor.java課堂練習(xí)編寫程序,用以個for循環(huán)計(jì)算1!+2!+3!
24、+ +10!的值,并打印出計(jì)算結(jié)果。OddSum.javawhile與do-whileWhile格式: while(表達(dá)式) 語句塊 do-while格式: do 語句塊 while(表達(dá)式);表達(dá)式true語句塊false語句塊表達(dá)式truefalse兩者區(qū)別?WhileTest.java循環(huán)語句舉例/輸出1100內(nèi)前5個能被3整除的數(shù)public class Test public static void main(String args) int num = 0,i = 1; while(i=100) if (i%3=0) System.out.print(i+ ); num+; if
25、(num=5) break; i+; /輸出101200內(nèi)的質(zhì)數(shù)public class Test public static void main(String args) for(int i=101;i200;i+=2) boolean f = true; for (int j=2;ji;j+) if (i%j=0) f = false; break; if (!f) continue; System.out.print(i+ ); Switch條件控制Switch 格式: switch(表達(dá)式) case 表達(dá)式1: 語句塊1 break; case 表達(dá)式2: 語句塊2 break; d
26、efault :(可有可無) 語句塊3 break; 小心case穿透,推薦使用break語句多個case可以合并到一起default可以省略,但不推薦省略注:表達(dá)式必須是int類型的(byte,short,char,int),break語句穿透問題SwitchTest.java方法Java中的方法類似于其他語言的函數(shù),是一段用來完成特定功能的代碼片段,聲明格式:修飾符1 修飾符2 . 返回值類型 方法名(形式參數(shù)列表) Java 語句 Sample: public String getName(String name) return “name = ” + name; 形式參數(shù): 在方法被調(diào)
27、用時,用于接收外界輸入的數(shù)據(jù)。實(shí)參: 調(diào)用方法時,實(shí)際傳給方法的數(shù)據(jù)。返回值: 方法在執(zhí)行完畢后返還給調(diào)用它的環(huán)境的數(shù)據(jù)。返回值類型:事先約定的返回值的數(shù)據(jù)類型,如無返回值,必須給出返回值類型void Java語言中使用下述形式調(diào)用方法:對象名.方法名(實(shí)參列表)實(shí)參的數(shù)目、數(shù)據(jù)類型和次序必須和所調(diào)用方法聲明的形參列表匹配return語句終止方法的運(yùn)行,并指定要返回的數(shù)據(jù)返回值類型:事先約定的返回值的數(shù)據(jù)類型,如無返回值,必須給出返回值類型void TestFuncation.java基本語法總結(jié)標(biāo)識符數(shù)據(jù)類型數(shù)據(jù)類型的轉(zhuǎn)換(主講四類八種)運(yùn)算符條件語句、循環(huán)語句:if/for/while/d
28、owhile()/break-continue/switch面向?qū)ο箢惻c對象對象在內(nèi)存中的解析方法的重載(overload)關(guān)鍵字:this、static、以及他們與類之間的關(guān)系package和import語句繼承訪問控制符多態(tài)類與對象類:具有相同屬性和功能的一類事物(屬性和方法的集合)。抽象:對具有相同屬性和方法的一類事物的描述過程就叫抽象,抽象的結(jié)果就是類。對象:類的一個實(shí)例,對象是組成類的元素。類的定義類定義的格式: 修飾符 class 類名 類體代碼 類的定義主要有兩部分組成:成員變量和方法/用class關(guān)鍵字定義類,例如: class Person /成員變量定義 private i
29、nt id=1; private int age = 20; /定義方法 public int getId() return id; public int getAge() return age; public void setAge(int i) age = i; 對象的創(chuàng)建Java語言中除基本數(shù)據(jù)類型之外的變量類型都稱之為引用類型。 Java中的對象是通過引用對其操作的。例如:/聲明了一個Person類型的變量,但并沒/有使它指向一個對象。Person p;/使用new語句創(chuàng)建了一個Person類型的對象,并用p指向它,以后可以通過p完成對它的操作。 p = new Person();p=
30、nullstackheapPerson p;p = new Person();pid:1age:20方法的調(diào)用 class Person /成員變量定義 private int id; private int age = 20; /定義方法 public int getId() return id; public int getAge() return age; public void setAge(int i) age = i; public class Test public static void main(String args) Person p = new Person(); p.
31、setAge(34); int age = p.getAge(); System.out.println(age); 使用 對象引用.方法名(參數(shù)列表)來調(diào)用對象的方法。封裝性類的封裝性:即不能讓外面的類隨意修改一個類的成員變量在定義一個類的成員(包括變量和方法),使用private關(guān)鍵字說明這個成員的訪問權(quán)限,只能被這個類的其他成員方法調(diào)用,而不能被其他的類中的方法所調(diào)用; 為實(shí)現(xiàn)封裝性,常將類的成員變量聲明為private,再通過public的方法來對這個變量進(jìn)行訪問。對一個變量的操作,一般都有 讀取和賦值操作,我們一般定義兩個方法來實(shí)現(xiàn)這兩種操作,即:getXxx()與setXxx();
32、 一個類就是一個模塊,我們應(yīng)該讓模塊僅僅公開必須要讓外界知道的內(nèi)容,而隱藏其他的一切內(nèi)容。再進(jìn)行程序設(shè)計(jì)時,應(yīng)盡量避免一個模塊直接修改或操作另一個模塊的數(shù)據(jù),模塊設(shè)計(jì)追求強(qiáng)內(nèi)聚(許多功能盡量在類的內(nèi)部獨(dú)立完成,不讓外面干預(yù)),弱耦合(提供給外部盡量少的方法調(diào)用)。構(gòu)造方法類內(nèi)部一種特殊的方法,創(chuàng)建對象時所調(diào)用的方法。使用 new +構(gòu)造方法名 創(chuàng)建一個新的對象。構(gòu)造方法是定義在java類中的一個用來初始化對象的方法。構(gòu)造方法沒有返回值類型,它與其他的方法在此處不同構(gòu)造方法的方法名與類名完全相同class Person /成員變量定義 int id; int age = 20; Person (
33、int i,int n) id = i; age = n; 構(gòu)造方法創(chuàng)建對象時,使用構(gòu)造方法初始化對象的成員變量。 public class Test public static void main(String args) /創(chuàng)建對象 Person tom = new Person(1,25); Person jack = new Person(2,20); tomstackjack125220heap構(gòu)造方法每個類都至少有一個構(gòu)造方法,如果我們沒有顯示的聲明,JVM會在加載該類時為其添加一個public的無參的構(gòu)造方法: 類名() 例如:class Point int x; int y;
34、.main Point p = new Point();課堂練習(xí)定義一個點(diǎn)(point)類用來表示三維空間中的點(diǎn)(有三個坐標(biāo)) 。要求如下: 1. 可以生成具有特定坐標(biāo)的點(diǎn)對象 2. 提供可以設(shè)置三個坐標(biāo)的方法 3. 提供可以計(jì)算該”點(diǎn)”到原點(diǎn)距離平方的方法 4. 編寫程序驗(yàn)證上面三點(diǎn)TestPoint.java方法的重載方法的重載是指一個類中可以定義有相同的名字,但參數(shù)不同的多個方法。調(diào)用時會根據(jù)不同的參數(shù)表選擇對應(yīng)的方法。判斷方法重載的依據(jù):1、在同一個類內(nèi)2、方法名相同3、參數(shù)的類型不同,或者參數(shù)的個數(shù)不同,或者參數(shù)的排列順序不同4、方法的返回值的不同不能作為判斷方法重載的依據(jù),僅僅是返
35、回值的不同,就造成了方法的重名,會報(bào)錯。TestOverLoad.java構(gòu)造方法的重載與普通方法一樣,構(gòu)造方法也可以重載例如: Person類的構(gòu)造方法class Person int id; int age; public Person() id = 1;age = 20 public Person(int m) id = m;age= 20; public Person(int m,int n) id = m;age= n; 課堂練習(xí):利用Person類,編寫程序, 分別用三種構(gòu)造方法創(chuàng)建三個Person對象,如下圖所示:p1p2p3120220536關(guān)鍵字this在類的方法中使用。Th
36、is:當(dāng)前對象的一個引用,指向它自己,在類的內(nèi)部使用。有時使用this可以處理方法中成員變量和參數(shù)重名的情況。 TestThis.javathisheap關(guān)鍵字static 在類中,用static聲明的成員變量為靜態(tài)成員變量,它為該類的公用變量,在第一次使用時被初始化,對于該類的所有對象來說, static成員變量該變量只有一份,保存在內(nèi)存的data segment中。用static聲明的方法,表示該方法為靜態(tài)方法,在調(diào)用方法時,不會將對象的引用傳遞給它,所以在static方法中,不能直接調(diào)用非靜態(tài)的成員變量或非靜態(tài)的方法??梢灾苯油ㄟ^類名.靜態(tài)方法名調(diào)用??梢酝ㄟ^對象、引用或類名(不需要實(shí)例
37、化)訪問靜態(tài)成員。TestStatic.javaTestFuncation.javapackage和import語句為便于管理大型軟件系統(tǒng)中數(shù)目眾多的類,解決類的命名沖突問題,java引入包(package)機(jī)制。package語句作為java源文件的第一條語句,指定該文件中定義的類所在的包。它的格式為: package pkg1.pkg2.pkg3;Java編譯器把包對應(yīng)于文件系統(tǒng)的目錄管理, package語句中,用.來指明包的層次,例如使用語句: package com.test; 則該文件中所有的類位于. comtest 目錄下TestPackage.java繼承子類通過繼承獲得基類的
38、所有屬性(包括私有的)及方法。在創(chuàng)建子類對象時,可以通過子類對象調(diào)用基類的方法和訪問除去私有的一切成員變量。繼承提高了代碼的復(fù)用性。子類可以擴(kuò)展基類的方法及屬性。子類對象的創(chuàng)建伴隨著父類對象的創(chuàng)建TestExtends.java(內(nèi)存分析)ageageAnimalcolorCat訪問權(quán)限控制訪問控制本類同一包中的類其他包中子類其他包中的類publicprotected缺省private Java權(quán)限修飾符public、private、protected置于類的成員定義前,用來限定其它對象對該類對象成員的訪問權(quán)限。 對于class的權(quán)限修飾只可以用public和default。 public類可
39、以在任何地方被訪問。 default類只可以被同一個包內(nèi)的類訪問。 TestAccess.java繼承中的權(quán)限控制class Parent private int n_private = 1; int n_default = 2; protected int n_protected = 3; public int n_public = 4;class Child extends Parent public void f() n_private = 10; /error n_default = 20; n_protected = 30; n_public = 40; 課堂練習(xí)編寫一個Comput
40、er 類,提供加(add)、減(reduce)、乘(sheng)、除(div)方法。SubComputer類,繼承Computer 類,提供取余(mod)、求平方(square)、立方(cube)方法。TestComputer.java方法的重寫在子類中可以根據(jù)需要對從基類中繼承來的方法進(jìn)行重寫。重寫方法必須和被重寫方法具有相同方法名稱、參數(shù)列表和返回類型。重寫方法的訪問權(quán)限不能比被重寫方法的低。TestOverride.javasuper關(guān)鍵字在子類中可以使用super關(guān)鍵字來引用基類的成分,例如:class FatherClass public int value; public void
41、 f() value = 100; System.out.println(“FatherClass.value=” +value ); class ChildClass extends FatherClass public int value; public void f() super.f(); / 這里的super可以省略嗎? value = 200; System.out.println(“ChildClass.value=” +value ); System.out.println(“super.value=” +super.value ); .main. ChildClass cc
42、= new ChildClass(); s.f();thissupervalue:200value:100ccsuper關(guān)鍵字class Person public static void prt(String s) System.out.println(s); Person() prt(A Person.); Person(String name) prt(A person name is:+name); public class Chinese extends Person Chinese() super(); /調(diào)用父類構(gòu)造函數(shù)(1),必須寫在第一行 prt(A chinese.); C
43、hinese(String name) super(name);/調(diào)用父類具有相同形參的構(gòu)造函數(shù)(2) prt(his name is:+name); Chinese(String name,int age) this(name);/調(diào)用當(dāng)前具有相同形參的構(gòu)造函數(shù)(3) prt(his age is:+age); public static void main(String args) Chinese cn=new Chinese(); cn=new Chinese(kevin); cn=new Chinese(kevin,22); 課堂練習(xí)創(chuàng)建一個僅有一個非缺省構(gòu)造器的基類,并創(chuàng)建一個帶有缺
44、省構(gòu)造器和非缺省構(gòu)造器的導(dǎo)出類。在導(dǎo)出類的構(gòu)造器中調(diào)用基類的構(gòu)造器。 關(guān)鍵字finalfinal修飾類,表示該類是不能被繼承的;final修飾成員變量,表示該變量為常量,值不可以被修改,變量名一般采用大寫字母,字母之間通過下劃線連接;final修飾方法,表示該方法不能被重寫,但是可以使用一般final和static一起用,當(dāng)類被多次創(chuàng)建時,只創(chuàng)建一次變量,可以節(jié)約內(nèi)存。class Animal public String name; Animal(String name) = name; class Cat extends Animal public String eyes
45、Color; Cat(String n,String c) super(n); this.eyesColor = c; class Dog extends Animal public String furColor; Dog(String n,String c) super(n); this.furColor = c; 多態(tài)public class Testpublic static void main(String args) Test test = new Test();Animal a = new Animal(name);Cat c = new Cat(catName,blue);Do
46、g d = new Dog(dogName,black);test.f(a);test.f(c);test.f(d); public void f(Animal a)System.out.println(name: +);if (a instanceof Cat) Cat cat = (Cat)a;System.out.println( +cat.eyesColor+ eyes);else if (a instanceof Dog) Dog dog = (Dog)a;System.out.println( +dog.furColor+ fur);多態(tài)多態(tài)TestPolymoph/Test.ja
47、va多態(tài)是指在執(zhí)行期間(而非編譯期)判斷所引用對象的實(shí)際類型,根據(jù)其實(shí)際的類型調(diào)用其相應(yīng)的方法。上面例子中,根據(jù)Lady對象的成員變量Pet所引用的不同的實(shí)際類型而調(diào)用相應(yīng)的enjoy方法。class Bird extends Animalprivate String featherColor;Bird(String n,String f) super(n); this.featherColor = f; public void enjoy()System.out.println(鳥叫聲.);public class Test public static void main(String ar
48、gs) Bird b = new Bird(“birdname”,”green”); Lady l3 = new Lady(l3,b); l3.myPetEnjoy(); 1.要有繼承2.要有重寫3.父類引用指向子類對象課堂練習(xí)分析上面的程序,體會“多態(tài)特性”對于系統(tǒng)可擴(kuò)充性的重要性。利用多態(tài)性編程,實(shí)現(xiàn)求三角形,正方形和圓形面積。方法:抽象出一個共享父類,定義一函數(shù)為求面積的公共界面,再重新定義各形狀的求面積函數(shù)。在主類中創(chuàng)建不同類的對象,并求得不同形狀的面積。MianJi.java抽象類用abstract關(guān)鍵字來修飾一個類時,這個類叫做抽象類;用abstract來修飾方法時,該方法叫做抽象
49、方法。含有抽象方法的類必須被聲明為抽象類,抽象類必須被繼承,抽象方法必須被重寫。抽象類不能被實(shí)例化。抽象方法只需聲明,不需要實(shí)現(xiàn)。TestAbstract.javaabstract class Animal private String name; Animal(String name) = name; abstract public void enjoy(); class Cat extends Animal private String eyesColor; Cat(String n,String c) super(n); this.eyesColor = c; pub
50、lic void enjoy()System.out.println(貓叫聲.);課堂練習(xí)創(chuàng)建一個基類,包含抽象方法print(),并在導(dǎo)出類中將其實(shí)現(xiàn)。重載的版本中會打印基類中定義的某個整型變量的值。在定義該變量時,請賦予非零值。在基類的構(gòu)造器中,可以調(diào)用這個方法?,F(xiàn)在,在main()方法中,創(chuàng)建一個導(dǎo)出類對象,然后調(diào)用它的print()方法。解釋發(fā)生的情形。 接口接口是(interface)是抽象方法和常量值的定義的集合。從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實(shí)現(xiàn)。接口定義舉例:public interface runner int id
51、 = 1;public void start();public void run();public void stop();接口特性多個無關(guān)的類可以實(shí)現(xiàn)同一個接口。接口不能實(shí)例化。一個類可以實(shí)現(xiàn)多個無關(guān)的接口。定義java類的語法格式: class extends implements , . 接口中聲明屬性默認(rèn)為 public static final 的,也只能是public static final 的;即使不寫,在編譯時會為其加上public static final。接口中只能定義抽象方法,而且這些方法默認(rèn)為public的,也只能是public的;接口可以繼承其他的接口,并添加新的屬
52、性和方法。interface Singer public void sing();public void sleep();class Student implements Singerprivate String name;Student(String name) = name;public String getName()return name;public void study()System.out.println(studying);public void sing()System.out.println(student is singing);public void
53、 sleep()System.out.println(student is sleeping);接口舉例interface Painter public void paint();public void eat();class Teacher implements Singer,Painterprivate String name;Teacher(String name) = name;public String getName()return name;public void teach()System.out.println(teaching);public void s
54、ing()System.out.println(teacher is singing);public void sleep()System.out.println(teacher is sleeping);public void paint()System.out.println(teacher is painting);public void eat()System.out.println(teacher is eating);public class Test public static void main(String args) Singer s1 = new Student(le);
55、 s1.sing(); s1.sleep(); Singer s2 = new Teacher(steven); s2.sing(); s2.sleep(); Painter p1 = (Painter)s2; p1.eat(); p1.paint();輸出結(jié)果:student is singingstudent is sleepingteacher is singingteacher is sleepingteacher is eatingteacher is painting課堂練習(xí)創(chuàng)建三個接口,使之各有兩個方法。再創(chuàng)建一個新的接口,繼承三者,并添加一個新方法。然后創(chuàng)建一個類,在實(shí)現(xiàn)此新接
56、口的同時,繼承一個實(shí)際的類。并為這個類寫四個方法,每個方法分別以四個接口中的一個作為參數(shù)。在main()中,創(chuàng)建這個類的對象,然后將它作為參數(shù)傳遞給那四個方法。 總結(jié)類與對象對象在內(nèi)存中的解析方法的重載(overload)關(guān)鍵字:this、static、以及他們與類之間的關(guān)系package和import語句繼承訪問控制符多態(tài)java常用的類String類與StringBuffer類的區(qū)別8個基礎(chǔ)數(shù)據(jù)類型包裝類java.lang包下的一些類的解讀比如Math類Java API 查閱java常用的類String類與StringBuffer類的區(qū)別:在java中有3個類來負(fù)責(zé)字符的操作。 1.Cha
57、racter 是進(jìn)行單個字符操作的,2.String 對一串字符進(jìn)行操作。不可變類。3.StringBuffer 也是對一串字符進(jìn)行操作,但是可變類。java常用的類String類與StringBuffer類的區(qū)別: String:是對象不是原始類型.為不可變對象,一旦被創(chuàng)建,就不能修改它的值.對于已經(jīng)存在的String對象的修改都是重新創(chuàng)建一個新的對象,然后把新的值保存進(jìn)去.String 是final類,即不能被繼承.StringBuffer:是一個可變對象,當(dāng)對他進(jìn)行修改的時候不會像String那樣重新建立對象它只能通過構(gòu)造函數(shù)來建立,StringBuffer sb = new Strin
58、gBuffer();note:不能通過付值符號對他進(jìn)行付值. sb = welcome to here!;/errorjava常用的類String類與StringBuffer類的區(qū)別:對象被建立以后,在內(nèi)存中就會分配內(nèi)存空間,并初始保存一個null.向StringBuffer中賦值的時候可以通過它的append方法.sb.append(hello);字符串連接操作中StringBuffer的效率要比String高:String str = new String(welcome to );str += here;的處理步驟實(shí)際上是通過建立一個StringBuffer,讓侯調(diào)用append(),最
59、后再將StringBuffer toSting();這樣的話String的連接操作就比StringBuffer多出了一些附加操作,當(dāng)然效率上要打折扣.并且由于String 對象是不可變對象,每次操作Sting 都會重新建立新的對象來保存新的值.這樣原來的對象就沒用了,就要被垃圾回收.這也是要影響性能的. java常用的類String類與StringBuffer類的區(qū)別:看看以下代碼:將26個英文字母重復(fù)加了5000次.1. String tempstr = abcdefghijklmnopqrstuvwxyz; 2. int times = 5000; 3. long lstart1 = Sy
60、stem.currentTimeMillis(); 4. String str = ; 5. for (int i = 0; i times; i+) 6. str += tempstr; 7. 8. long lend1 = System.currentTimeMillis(); 9. long time = (lend1 - lstart1); 10. System.out.println(time);得到的結(jié)果一般為 46687左右。也就是46秒。java常用的類String類與StringBuffer類的區(qū)別:我們再看看以下代碼1. String tempstr = abcdefghi
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考物理總復(fù)習(xí)專題十一交變電流第1講交變電流的產(chǎn)生和描述練習(xí)含答案
- 清算風(fēng)險管理協(xié)議
- 油漆購銷合同范例
- 九年級道德與法治上冊 第一單元 富強(qiáng)與創(chuàng)新 第一課 踏上強(qiáng)國之路 第2框走向共同富裕教案1 新人教版
- 二年級品德與生活上冊 玩中有發(fā)現(xiàn)教案1 首師大版
- 2024-2025學(xué)年新教材高中生物 第四章 生物的變異 第一節(jié) 基因突變可能引起性狀改變教案(2)浙科版必修2
- 2024-2025學(xué)年高中歷史 第一單元 第1課 第一次世界大戰(zhàn)的爆發(fā)教案1 新人教版選修3
- 2024-2025學(xué)年高中地理 第二章 中國的主要自然災(zāi)害 2.1 自然資源利用中存在的問題教案 中圖版選修6
- 廣東省佛山市順德區(qū)江義初級中學(xué)九年級化學(xué)上冊 3.1 分子和原子教案3 (新版)新人教版
- 2023七年級語文下冊 第四單元 寫作 怎樣選材配套教案 新人教版
- 2024過敏性休克搶救指南(2024)課件干貨分享
- 天貓購銷合同范本
- 以租代購購買房產(chǎn)合同
- 大學(xué)生創(chuàng)業(yè)英語智慧樹知到期末考試答案章節(jié)答案2024年廣西師范大學(xué)
- 個人停車位租賃合同范本(2024版)
- 飛機(jī)儀電與飛控系統(tǒng)原理智慧樹知到期末考試答案章節(jié)答案2024年中國人民解放軍海軍航空大學(xué)
- 燃?xì)饬髁坑?jì)體積修正儀校準(zhǔn)規(guī)范
- 大班語言課《石頭小豬》教案設(shè)計(jì)
- 2024版小程序開發(fā)服務(wù)合同范本
- 腫瘤物理消融規(guī)范化培訓(xùn)考試題
- 采購管理制度設(shè)計(jì)方案畢業(yè)設(shè)計(jì)(2篇)
評論
0/150
提交評論