




已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java講義教師:王明軍武漢大學(xué)資源與環(huán)境科學(xué)學(xué)院地理信息科學(xué)系30Chap1. 緒論1、Java歷史及發(fā)展Java是一種解釋型的、面向?qū)ο蟮木幊陶Z言。歷史:1991年,SUN MicroSystem公司的Jame Gosling、Bill Joe等人為在電視、控制烤箱等家用消費(fèi)類電子產(chǎn)品上進(jìn)行交互式操作而開發(fā)了一個(gè)名為Oak的軟件。發(fā)展:面向網(wǎng)絡(luò)應(yīng)用,類庫不斷豐富,性能不斷提高,應(yīng)用領(lǐng)域不斷拓展。(1994年以來)應(yīng)用:適于開發(fā)各種應(yīng)用,尤其是基于網(wǎng)絡(luò)的應(yīng)用、嵌入式應(yīng)用等。2、Java語言特點(diǎn)Java= “C+” - “復(fù)雜性和奇異性” + “安全性和可移植性”(1) 面向?qū)ο驤ava語言的設(shè)計(jì)集中于對象及其接口,它提供了簡單的類機(jī)制以及動(dòng)態(tài)的接口模型。對象中封裝了它的狀態(tài)變量以及相應(yīng)的方法,實(shí)現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,并且通過繼承機(jī)制,子類可以使用父類所提供的方法,實(shí)現(xiàn)了代碼的復(fù)用。(2) 操作平臺(tái)無關(guān)性源程序Java編譯器SPARCpentiumPowerpc中間碼PowerpcpentiumSPARC二進(jìn)制源程序SPARCPowerpcpentiumPowerpcpentiumSPARC編譯器二進(jìn)制Java解釋器編譯型和解釋型語言的工作模式類、類庫裝載(庫)鏈接嚴(yán)格的語言定義:沒有“依據(jù)機(jī)器的不同而不同” 或“由編譯器決定”等字眼,最后的目標(biāo)碼都是一致的。Java解釋器生成與體系結(jié)構(gòu)無關(guān)的字節(jié)碼指令,只要安裝了Java運(yùn)行時(shí)系統(tǒng),Java程序就可在任意的處理器上運(yùn)行。這些字節(jié)碼指令對應(yīng)于Java虛擬機(jī)中的表示,Java解釋器得到字節(jié)碼后,對它進(jìn)行轉(zhuǎn)換,使之能夠在不同的平臺(tái)運(yùn)行。編譯,沒有絕對地址調(diào)入包含、繼承所用到的所有類, 內(nèi)存分配確定,變成真正可執(zhí)行的機(jī)器碼 Java源程序(.java文件)Java編譯器Java Bytecode(.class文件)系統(tǒng)執(zhí)行平臺(tái)Bytecode 解釋器Bytecode 載入器字節(jié)碼校驗(yàn)器不存在偽造的指針不違反訪問權(quán)限不非法訪問對象不導(dǎo)致操作棧溢出 Java的編譯與執(zhí)行不同的操作系統(tǒng)有不同的虛擬機(jī)。它類似一個(gè)小巧而高效的CPU。Bytecode代碼是與平臺(tái)無關(guān)的是虛擬機(jī)的機(jī)器指令。Java字節(jié)代碼運(yùn)行的兩種方式:interpreter(解釋方式)JavainterpreterJust-in-timecompilerRuntime SystemOperating SystemHardwareJust-in-time(即時(shí)編譯):有代碼生成器將字節(jié)代碼轉(zhuǎn)換成本機(jī)的機(jī)器代碼,然后可以以較高速度執(zhí)行.(3) 安全問題Java是在網(wǎng)絡(luò)環(huán)境下使用的語言,一個(gè)安全的網(wǎng)絡(luò)至少要防止以下幾種破壞的可能性:n毀滅系統(tǒng)資源n消耗系統(tǒng)資源n挖掘系統(tǒng)或個(gè)人機(jī)密n騷擾正常工作的進(jìn)行Bytecode的運(yùn)行加載代碼 由class(Bytecode) loader 完成。 校驗(yàn)代碼 由Bytecode verifier 完成。 執(zhí)行代碼 由 runtime interpreter完成。Java源程序(.java文件)Java編譯器Java Bytecode(.class文件)Bytecode 載入器Bytecode 解釋器系統(tǒng)執(zhí)行平臺(tái)語言定義publicprotectedprivatefinal取消指針自動(dòng)回收垃圾Bytecode檢查限定對象的存取權(quán)限系統(tǒng)堆棧溢出參數(shù)類型一致程序執(zhí)行系統(tǒng)WWW瀏覽器限制Java小應(yīng)用程序的不正當(dāng)使用Java的安全措施(4) 多線程Java提供現(xiàn)成的類Thread,只要繼承這個(gè)類就可以編寫多線程的程序。多線程機(jī)制使應(yīng)用程序能夠并行執(zhí)行,而且同步機(jī)制保證了對共享數(shù)據(jù)的正確操作。通過使用多線程,程序設(shè)計(jì)者可以分別用不同的線程完成特定的行為,而不需要采用全局的事件循環(huán)機(jī)制,這樣就很容易地實(shí)現(xiàn)網(wǎng)絡(luò)上的實(shí)時(shí)交互行為。(5) 可移植性(跨越多個(gè)平臺(tái))(6) 分布性(克服空間上的障礙)(7) 高性能(相對于其他解釋型語言)(8) 健壯性((9) Java與C及C+的區(qū)別不再有全局變量不再有#include 和#define 等預(yù)處理功能不再有structure、union及typedef等不再有函數(shù)、不再有指針、不再有多重繼承不再有g(shù)oto語句不再有操作符重載(Operatior Overloading)取消自動(dòng)類型轉(zhuǎn)換,要求強(qiáng)制轉(zhuǎn)換自動(dòng)進(jìn)行內(nèi)存管理3Java開發(fā)工具包括:Javac:Java編譯器,用來將java程序編譯成 Bytecode。Java:Java解釋器,執(zhí)行已經(jīng)轉(zhuǎn)換成Bytecode的 java應(yīng)用程序。Jdb:Java調(diào)試器, 用來調(diào)試java程序。Javap:反編譯,將類文件還原回方法和變量。javadoc:文檔生成器,創(chuàng)建HTML文件。Appletviwer:Applet解釋器, 用來解釋已經(jīng)轉(zhuǎn)換成 Bytecode的java小應(yīng)用程序。1. Java程序結(jié)構(gòu): package語句:零個(gè)或多個(gè),必須放在文件開始 import語句:零個(gè)或多個(gè),必須放在所有類定義之前 public ClassDefinition:零個(gè)或一個(gè) ClassDefinition:零個(gè)或多個(gè) InterfaceDefinition:零個(gè)或多個(gè)類個(gè)數(shù):至少一個(gè)類,最多只能有一個(gè)public類源文件命名:若有public類,源文件必須按該類命名標(biāo)識(shí)符:區(qū)分大小寫2.Java應(yīng)用程序(Java Application) 類庫支持:引用其他類。 類定義:定義程序所需的類及接口,包括其內(nèi)部的變量、方法等。 main()方法:應(yīng)用程序的入口,與標(biāo)準(zhǔn)C中main()函數(shù)的地位是一樣的。一個(gè)應(yīng)用程序有且只有一個(gè)main()方法,main()方法必須包含在一個(gè)類中,該類即為應(yīng)用程序的外部標(biāo)志。 程序注釋:與C類似,/*/ /3.Java小程序(Java Applet)類庫支持:繼承Applet類,引用其他類。類定義:定義程序所需的類及接口,包括其內(nèi)部的變量、方法等。init()方法:初始化,自動(dòng)調(diào)用,只執(zhí)行一次。start()方法:初始化后,重入等都將自動(dòng)調(diào)用。Applet的主體,在其中可以執(zhí)行一些任務(wù)或啟動(dòng)相關(guān)的線程來執(zhí)行任務(wù),如paint()方法等。stop()方法:離開Applet所在頁面時(shí)調(diào)用,以停止消耗系統(tǒng)資源。4.Java Application舉例public class HelloWorldApp public static void main(String args) System.out.println(“Hello World!”); n編輯存盤:文件名和公共類名(用public聲明)要一致 HelloWorldApp.javan編譯程序:javac HelloWorldApp.javan運(yùn)行程序:java HelloWorldAppn運(yùn)行結(jié)果:Hello World!public class HelloWorldApp public static void main(String args) System.out.println(“Hello World!”); 聲明一個(gè)類:public class HelloWorldApp,類名第一個(gè)字母大寫。一個(gè)類中可有很多方法, main方法是運(yùn)行程序的第一個(gè)方法,方法名的第一個(gè)字母小寫。System.out.println是向屏幕輸出,相當(dāng)于C中的printf()。class CommArg public static void main(String args) / Display command arguments int i; if( args.length 0 ) /have some command arguments for( i=0; iargs.length; i+ ) System.out.println(arg+i+ = +argsi); else /no command argument System.out.println(No arguments!); n命令行參數(shù): main( String args ),與標(biāo)準(zhǔn)C中main(int argc, char* argv)相似。n字符串的拼接: arg + i + = + argsi。n編譯程序:javac HelloWorldApp.javan運(yùn)行程序(命令行參數(shù)獲?。?java CommArg first second thirdn運(yùn)行結(jié)果: arg0 = first arg1 = second arg2 = third5.Applet舉例import java.applet.*;import java.awt.*;public class HelloApplet extends Applet public String s; public void init() s = new String(“Hello World!”); public void paint(Graphics g) g.drawString(s,25,25); 編輯存盤:文件名和主類名一致編譯代碼:javac HelloApplet.java編寫HTML文件: HelloApplet.html Hello World Java小應(yīng)用程序不能直接執(zhí)行和使用,必須要在瀏覽器中執(zhí)行。運(yùn)行applet程序: 1. appletviewer MyTest.html 2. 在瀏覽器中運(yùn)行 運(yùn)行結(jié)果: Hello World!理解程序:nimport語句相當(dāng)于C語言中的include。 n每一個(gè)applet都是java.applet.Applet的子類,用extends繼承。napplet中沒有main()方法。當(dāng)applet被瀏覽器運(yùn)行時(shí), init() 、start()方法等自動(dòng)執(zhí)行,再調(diào)用paint()方法。n在applet中與屏幕輸出有關(guān)的操作通過Graphics對象來實(shí)現(xiàn)。n一個(gè)Java源文件內(nèi)最多只能有一個(gè)public 類,稱為主類,且文件名必須和它同名。import java.util.*;import java.awt.*;import java.applet.*;import java.text.*;public class MyTest extends AppletString s1,s2,s3,s4;public void init()s1 = getParameter(p1);s2 = getParameter(p2);s3 = getParameter(p3);s4 = getParameter(p4);public void paint(Graphics g)g.drawString(s1,10,10);g.drawString(s2,10,30);g.drawString(s3,10,50);g.drawString(s4,10,70);編輯存盤:文件名和主類名一致編譯代碼:javac MyTest.java編寫HTML文件: MyTest.html Applet Parameter Test 運(yùn)行applet程序: 1. appletviewer MyTest.html 2. 在瀏覽器中運(yùn)行 運(yùn)行結(jié)果: 1111111 2222222 3333333 4444444理解程序:n從頁面中獲取Applet參數(shù): s1 = getParameter(p1);n在頁面中設(shè)置Applet參數(shù): 包、類、變量、方法等命名:要體現(xiàn)各自的含義。 包名全部小寫,io,awt 類名第一個(gè)字母要大寫,HelloWorldApp 變量名第一個(gè)字母要小寫,userName 方法名第一個(gè)字母要小寫,setName程序書寫格式:保證良好的可讀性,使程序一目了然。 大括號(hào)的使用與對齊 語句段的對齊 在語句段之間適當(dāng)空行 程序注釋:幫助了解程序的功能。 類注釋 變量注釋 方法注釋 語句注釋 語句段注釋Chap2. Java語言基礎(chǔ)任何程序設(shè)計(jì)語言,都是由語言規(guī)范和一系列開發(fā)庫組成的。如標(biāo)準(zhǔn)C,除了語言規(guī)范外,還有很多函數(shù)庫;MS Visual C+更是提供了龐大的APIs和MFC。 Java語言也不例外,也是由Java語言規(guī)范和Java開發(fā)類庫(JFC)組成的。 學(xué)習(xí)任何程序設(shè)計(jì)語言,都是要從這兩方面著手,尤其是要能夠熟練地使用后者。1、Java數(shù)據(jù)類型2、Java運(yùn)算符和表達(dá)式3、Java控制語句4、Java類定義規(guī)范5、Java數(shù)組6、Java開發(fā)類庫組成1、Java數(shù)據(jù)類型(1)標(biāo)識(shí)符程序員對程序中的各個(gè)元素加以命名時(shí)使用的命名記號(hào)稱為標(biāo)識(shí)符(identifier)包括:類名、變量名、常量名、方法名、Java語言中,標(biāo)識(shí)符是以字母,下劃線(_),美元符($)開始的一個(gè)字符序列,后面可以跟字母,下劃線,美元符,數(shù)字。合法的標(biāo)識(shí)符identifier userName User_Name _sys_value $change非法的標(biāo)識(shí)符2mailroom#class(2)保留字具有專門的意義和用途,不能當(dāng)作一般的標(biāo)識(shí)符使用,這些標(biāo)識(shí)符稱為保留字(reserved word)。abstract break byte boolean catch case class char continue default double do else extends false final float for finallyif import implements int interface instanceof long length native new null package private protected public final return switch synchronized short static super try true this throw throws threadsafe transient void while(3)常量用文字串來表示,具有不同的類型,其定義格式為:final Type varName = value , varName =value ;(4)變量程序中的基本存儲(chǔ)單元,其定義包括變量名、變量類型和作用域幾個(gè)部分,定義格式為:Type varName = value , varName =value ;作用域:指可訪問變量的一段代碼,在程序中不同的地方聲明的變量具有不同的作用域:局部變量、類變量、方法參數(shù)、例外處理參數(shù)。在一定的作用域內(nèi),變量名必須唯一。(5)數(shù)據(jù)類型基本類型:所有基本類型所占的位數(shù)都是確定的,并不因操作系統(tǒng)的不同而不同。數(shù)據(jù)類型所占位數(shù)數(shù)的范圍 char 160 65535 byte 8-2727-1 short 16-215215-1 int 32-231231-1 long 64-263263-1 float 323.4e038 3.4e038 double 641.7e308 1.7e308引用類型: 在Java中“引用”是指向一個(gè)對象在內(nèi)存中的位置,在本質(zhì)上是一種帶有很強(qiáng)的完整性和安全性的限制的指針。 當(dāng)你聲明某個(gè)類,接口或數(shù)組類型的一個(gè)變量時(shí),那個(gè)變量的值總是某個(gè)對象的引用或者是null引用。 指針就是簡單的地址而已,引用除了表示地址而外,還象被引用的數(shù)據(jù)對象的縮影,還提供其他信息。 指針可以有+、-運(yùn)算,引用不可以運(yùn)算。布爾型數(shù)據(jù)只有兩個(gè)值true和false,且它們不對應(yīng)于任何整數(shù)值布爾型變量的定義如:boolean b=true; 字符常量字符常量是用單引號(hào)括起來的一個(gè)字符,如a,A;字符型變量類型為char,它在機(jī)器中占16位。字符型變量的定義如:char c=a;/指定變量c為char型,且賦初值為a整型常量1. 十進(jìn)制整數(shù)如123,456,02. 八進(jìn)制整數(shù)以0開頭,如0123表示十進(jìn)制數(shù)83,011表示十進(jìn)制數(shù)9。3. 十六進(jìn)制整數(shù)以0x或0X開頭,如0x123表示十進(jìn)制數(shù)291,0X12表示十進(jìn)制數(shù)18。整型變量類型為byte、short、int或long,byte在機(jī)器中占8位,short占16位,int占32位,long占64位。整型變量的定義如:int x=123; /指定變量x為int型,且賦初值為123 byte b = 8; short s = 10; long y = 123L; long z = 123l; 實(shí)型常量1. 十進(jìn)制數(shù)形式由數(shù)字和小數(shù)點(diǎn)組成,且必須有小數(shù)點(diǎn),如0.123, .123, 123.,123.02. 科學(xué)計(jì)數(shù)法形式如:123e3或123E3,其中e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。實(shí)型變量類型為float或double,float在機(jī)器中占32位,double占64位。實(shí)型變量的定義如:float x=0.123; /指定變量x為float型,且賦初值為0.123 double y = 0.123F; double z = 0.123f; public class Assign public static void main (String args ) int x , y ; byte b = 6; float z = 1.234f ; double w = 1.234 ; boolean flag = true ; char c ; c = A ; x = 12 ; y = 300; . 自動(dòng)類型轉(zhuǎn)換整型、實(shí)型、字符型數(shù)據(jù)可以混合運(yùn)算。運(yùn)算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進(jìn)行運(yùn)算,轉(zhuǎn)換從低級到高級:低-高byte,short,char int long float double如果從高級轉(zhuǎn)換成低級,則需要強(qiáng)制類型轉(zhuǎn)換,但會(huì)導(dǎo)致溢出或精度下降。如:int i = 8; byte b=(byte)i; 2、Java運(yùn)算符和表達(dá)式(1)運(yùn)算符算術(shù)運(yùn)算符: +,*,/,%,+,關(guān)系運(yùn)算符: ,=,&,|,賦值運(yùn)算符: =,及其擴(kuò)展賦值運(yùn)算符如+=,=,*=,/=等。條件運(yùn)算符: ?:其它:包括分量運(yùn)算符 ,下標(biāo)運(yùn)算符 ,實(shí)例運(yùn)算符instanceof,內(nèi)存分配運(yùn)算符new,強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 (類型),方法調(diào)用運(yùn)算符 () 等。由于數(shù)據(jù)類型的長度是確定的,所以沒有長度運(yùn)算符sizeof。2)表達(dá)式表達(dá)式是由操作數(shù)和運(yùn)算符按一定的語法形式組成的符號(hào)序列。一個(gè)常量或一個(gè)變量名字是最簡單的表達(dá)式,其值即該常量或變量的值;表達(dá)式的值還可以用作其他運(yùn)算的操作數(shù),形成更復(fù)雜的表達(dá)式。例:xnum1+num2a*(b+c)+d3.14x , , , = , = 15)= , += , -= , *= , /= , %= , =8)= , != 16)&= , |= , = , = 3、Java控制語句分支語句:if-else, switch 循環(huán)語句:while, do-while, for 與程序轉(zhuǎn)移有關(guān)的其它語句:break, continue, return 例外處理語句:try-catch-finally, throw條件語句 if-elseif(boolean-expression1) statements1; else if(boolean-expression2) statements2; else statementsN; 布爾表達(dá)式boolean-expression是任意一個(gè)返回布爾數(shù)據(jù)類型的表達(dá)式,而且必須是(比C或C +要嚴(yán)格)。 與C或C+一樣,每個(gè)單一語句后面都要有分號(hào)。為了增強(qiáng)程序的可讀性,應(yīng)將if或else后的語句用括起來。 else子句是任選的,不能單獨(dú)作為語句使用,它必須和if語句配對使用,并且總是與離它最近的if配對。n多分支語句 switchswitch (expression)case value1 : statements1; break;case valueN : statementsN; break;default : defaultStatements;表達(dá)式expression的返回值類型必須是這幾種類型之一:int、byte、char、short。 case子句中的值valueI必須是常量,而且所有case子句中的值應(yīng)是不同的。 default子句是任選的。 break語句用來在執(zhí)行完一個(gè)case分支后,使程序跳出switch語句,即終止switch語句的執(zhí)行。如果某個(gè)case分支后沒有break語句,程序?qū)⒉辉僮霰容^而執(zhí)行下一個(gè)分支。 switch語句的功能可以用if-else語句來實(shí)現(xiàn),但某些情況下,使用switch語句更簡煉。循環(huán)語句 while(當(dāng)型循環(huán)) initialization /初始化條件 while (termination) /循環(huán)條件body; /循環(huán)體iteration; /迭代,變更循環(huán)條件 當(dāng)表達(dá)式termination為true時(shí),執(zhí)行中的語句,否則終止循環(huán)。循環(huán)語句 do-while(直到型循環(huán)) initialization /初始化條件 do body; /循環(huán)體iteration; /迭代,變更循環(huán)條件 while (termination) ; /循環(huán)條件首先執(zhí)行一遍中的語句,當(dāng)表達(dá)式termination為true時(shí),繼續(xù)執(zhí)行中的語句,否則終止循環(huán)。循環(huán)語句 for(另一種當(dāng)型循環(huán))for (initialization; termination; iteration)body; /循環(huán)體 initialization /初始化條件 termination /循環(huán)條件 iteration /迭代,變更循環(huán)條件for語句執(zhí)行時(shí),首先執(zhí)行初始化操作,然后判斷終止條件是否滿足,如果滿足,則執(zhí)行循環(huán)體中的語句,最后執(zhí)行迭代部分。完成一次循環(huán)后,重新判斷終止條件。 初始化、終止以及迭代部分都可以為空語句(但分號(hào)不能省),三者均為空的時(shí)候,相當(dāng)于一個(gè)無限循環(huán)。 在初始化部分和迭代部分可以使用逗號(hào)語句,來進(jìn)行多個(gè)操作。逗號(hào)語句是用逗號(hào)分隔的語句序列。for( int i=0, int j=10; ij; i+, j-)程序轉(zhuǎn)移相關(guān)語句 break在switch語中,break語句用來終止switch語句的執(zhí)行,使程序從整個(gè)switch語句后的第一條語句開始執(zhí)行。n在Java中,可以為每個(gè)代碼塊加一個(gè)標(biāo)號(hào),一個(gè)代碼塊通常是用大括號(hào)括起來的一段代碼。加標(biāo)號(hào)的格式為:BlockLabel: codeBlock; nbreak語句的第二種使用情況就是跳出它所指定的塊,并從緊跟該塊后的第一條語句處執(zhí)行。break BlockLabel;程序轉(zhuǎn)移相關(guān)語句 continuecontinue語句用來結(jié)束本次循環(huán),跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進(jìn)行終止條件的判斷,以決定是否繼續(xù)循環(huán)。對于for語句,在進(jìn)行終止條件的判斷前,還要先執(zhí)行迭代語句。它的格式為:continue;也可以用continue跳轉(zhuǎn)到括號(hào)指明的外層循環(huán)中,這時(shí)的格式為continue outerLable;程序轉(zhuǎn)移相關(guān)語句 return return語句從當(dāng)前方法中退出,返回到調(diào)用該方法的語句處,并從緊跟該語句的下一條語句繼續(xù)程序的執(zhí)行。返回語句有兩種格式:return expression; /當(dāng)方法需要返回某種類型數(shù)據(jù)時(shí)return; /當(dāng)方法的返回類型為void時(shí) 單獨(dú)一條return語句放在方法中間時(shí),會(huì)產(chǎn)生編譯錯(cuò)誤,因?yàn)槠浜蟮恼Z句將不會(huì)執(zhí)行到。若真需要退出方法,可以通過將return語句嵌入某些語句(如if-else)來使程序在未執(zhí)行完方法中所有語句時(shí)退出。例外處理語句:try-catch-finally, throw在進(jìn)行程序設(shè)計(jì)時(shí),錯(cuò)誤的產(chǎn)生是不可避免得。如何處理錯(cuò)誤?把錯(cuò)誤交給誰去處理?程序又該如何從錯(cuò)誤中恢復(fù)?這是任何程序設(shè)計(jì)語言都必須面對和解決的問題。Java語言中是通過例外(Exception)來處理錯(cuò)誤的。我們將在第六講中詳細(xì)介紹例外及其處理。4、Java類定義規(guī)范 Java是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,具備面向?qū)ο蠹夹g(shù)的基本屬性。類是Java中體現(xiàn)面相對象特征的主要內(nèi)容,它是Java中的一種重要數(shù)據(jù)類型,是組成Java程序的基本要素。我們將在下一節(jié)課中詳細(xì)介紹類的定義以及與之相關(guān)的對象、包、接口等概念。5、Java數(shù)組 在Java語言中,數(shù)組是一種最簡單的復(fù)合數(shù)據(jù)類型(引用數(shù)據(jù)類型)。數(shù)組是有序數(shù)據(jù)的集合,數(shù)組中的每個(gè)元素具有相同的數(shù)據(jù)類型,可以用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來唯一地確定數(shù)組中的元素。數(shù)組有一維數(shù)組和多維數(shù)組。我們將在后面的課程中介紹。6、Java開發(fā)類庫組成Java提供了豐富的標(biāo)準(zhǔn)類來幫助程序設(shè)計(jì)者更方便快捷地編寫程序,這些標(biāo)準(zhǔn)類組成了類包,主要有:java.lang java.awtjava.applet java.awt.imagejava.awt.peer java.util 除了java.lang之外,其余類包都不是java語言所必須的。1)java.lang 本類包中包含了各種定義java語言時(shí)必須的類,這些類能夠以其他類不能使用的方式訪問java的內(nèi)部。任何java程序都將自動(dòng)引入這個(gè)包。其中的類包括: Object類:java中最原始、最重要的類,每個(gè)java類都是它的子類,它實(shí)現(xiàn)了每個(gè)類都必須具有的基本方法。 基本類型包裝器:Boolean, Character, Number, Double, Float, Integer, Long。 String類:字符串類。 Math類:數(shù)學(xué)函數(shù)的集合。 執(zhí)行線程:類Thread, ThreadGroup, 接口Runable。 異常和錯(cuò)誤:類Exception, Error, 接口Throwable。(1)java.lang 運(yùn)行環(huán)境:可以通過類Runtime和System訪問外部系統(tǒng)環(huán)境。System類的兩個(gè)常用功能就是訪問標(biāo)準(zhǔn)輸入/輸出流和錯(cuò)誤流、退出程序。 其他類:接口Cloneable、運(yùn)行時(shí)的類等。(2)java.applet Java Applet是Java編程的一個(gè)主要魅力,java.applet類包提供了Applet的運(yùn)行機(jī)制以及一些編寫Applet非常有用的方法。(3) java.awt 本類包是各種窗口環(huán)境的統(tǒng)一界面(AWT代表Abstract Windows Toolkit,即抽象窗口工具包),其中的類使得創(chuàng)建諸如窗口、菜單、滾動(dòng)條、文本區(qū)、按鈕以及復(fù)選框等圖形用戶界面(GUI)的元素變得非常容易。(4) java.awt.image 類包能夠以獨(dú)立于設(shè)備的方式加載并過濾位圖圖象。(5) java.awt.peer java.awt.peer是全部awt組件的對等對象接口的集合,每個(gè)接口都提供了機(jī)器相關(guān)基本的方法,awt使用這些方法來實(shí)現(xiàn)GUI,而不必關(guān)心是何種機(jī)器或操作系統(tǒng)。(6) java.io Java的輸入/輸出模式是完全建立在流的基礎(chǔ)之上的。流是一種字節(jié)從一個(gè)地方到另一個(gè)地方的單向流動(dòng),可以把流附加于文件、管道和通信鏈路等。 java.io類包中定義的許多種流類通過繼承的方式進(jìn)行組織,其中也包括一些用來訪問本地文件系統(tǒng)上的文件的流類。(7) 類包用來完成與網(wǎng)絡(luò)相關(guān)的功能:URL、WWW連接以及更為通用的Socket網(wǎng)絡(luò)通信。(8) java.util java.util類包包含了一些實(shí)用類和有用的數(shù)據(jù)結(jié)構(gòu),如字典(Dictionary)、散列表(Hashtable)、堆棧(Stack)、向量(Vectror)以及枚舉類(Enumeration)等。Chap3. Java與面向?qū)ο蠹夹g(shù)1、面向?qū)ο蟮母拍?、Java中的類、方法和變量3、Java名字空間及訪問規(guī)則4、Java中的抽象類、接口和程序包5、對象的構(gòu)造方法1、面向?qū)ο蟮母拍钏^面向?qū)ο蟮姆椒▽W(xué),就是使我們分析、設(shè)計(jì)和實(shí)現(xiàn)一個(gè)系統(tǒng)的方法盡可能地接近我們認(rèn)識(shí)一個(gè)系統(tǒng)的方法。包括: 面向?qū)ο蟮姆治觯∣OA, Object-Oriented Analysis) 面向?qū)ο蟮脑O(shè)計(jì)(OOD, Object-Oriented Design) 面向?qū)ο蟮某绦蛟O(shè)計(jì)(OOPL, Object-Oriented Program)面向?qū)ο蠹夹g(shù)主要圍繞以下幾個(gè)概念: 對象、抽象數(shù)據(jù)類型、類、類型層次(子類)、繼承性、多態(tài)性。對象變量方法 對象有兩個(gè)層次的概念,現(xiàn)實(shí)生活中對象指的是可觀世界的實(shí)體;而程序中對象就是一組變量和相關(guān)方法的集合,其中變量表明對象的狀態(tài),方法表明對象所具有的行為??梢詫F(xiàn)實(shí)生活中的對象經(jīng)過抽象,映射為程序中的對象。對象在程序中是通過一種抽象數(shù)據(jù)類型來描述的,這種抽象數(shù)據(jù)類型稱為類(Class)。Class Car int color_number; int door_number; int speed; void brake() void speedUp() void slowDown() 類(Class)類是描述對象的“基本原型”,它定義一類對象所能擁有的數(shù)據(jù)和能完成的操作。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類是程序的基本單元。相似的對象可以歸并到同一個(gè)類中去,就像傳統(tǒng)語言中的變量與類型關(guān)系一樣。程序中的對象是類的一個(gè)實(shí)例,是一個(gè)軟件單元,它由一組結(jié)構(gòu)化的數(shù)據(jù)和在其上的一組操作構(gòu)成。n變量:指對象的所知道的狀態(tài)。n方法:指對象的功能單元。n消息軟件對象通過相互間傳遞消息來相互作用和通信,一個(gè)消息由三部分組成: 1. 接受消息的對象 2. 接收對象要采取的方法 3. 方法需要的參數(shù)對象B對象 A消息n一個(gè)例子class Helloprivate String s;public void showString() System.out.println(s);public void changeString(String str) s = str; n在程序中操作對象是類的一個(gè)實(shí)例。n創(chuàng)建一個(gè)對象: Hello obj=new Hello();n調(diào)用方法: obj.showString();為什么使用類采用簡單數(shù)據(jù)類型表示現(xiàn)實(shí)世界中概念的局存在一些限性。例如:采用int型數(shù)據(jù)表示一個(gè)日期概念,需要使用3個(gè)變量:intday,month,year;如果要表示2個(gè)人的生日,就要使用6個(gè)變量:int mybirthday, mybirthmonth, mybirthyear;int yourbirthday,yourbirthmonth,yourbirthyear;類中不但有變量,還有與之相關(guān)的操作所定義的方法。將變量和方法封裝在一個(gè)類中,可以對成員變量進(jìn)行隱藏,外部對類成員的訪問都通過方法進(jìn)行,能夠保護(hù)類成員不被非法修改。class BirthDate public int day,month,year; public int tomorrow() BirthDate mybirth, yourbirth;BirthDate date;已知當(dāng)前日期對象,求第2天的日期對象:date.day =date.day+1;如果date.day已經(jīng)為31,操作結(jié)果是非法狀態(tài)??梢远x一個(gè)成員方法tomorrow(),求第2天的日期對象。外部要獲得當(dāng)前日期的后一天時(shí),只要調(diào)用:date.tomorrow();n封裝 封裝把對象的所有組成部分組合在一起,封裝定義私有數(shù)據(jù) 方法 方法數(shù)據(jù)對象A對象B公有數(shù)據(jù)程序如何引用對象的數(shù)據(jù),封裝實(shí)際上使用方法將類的數(shù)據(jù)隱藏起來,控制用戶對類的修改和訪問數(shù)據(jù)的程度。bicycle(super class)Mountain bikesRacing bikesTandem bikessub classn子類子類是作為另一個(gè)類的擴(kuò)充或修正而定義的一個(gè)類。繼承繼承是子類利用父類中定義的方法和變量,就像它們屬于子類本身一樣。class Car int color_number; int door_number; int speed; public void push_break() public void add_oil() class Trash_Car extends Car double amount; public void fill_trash() n方法的覆蓋在子類中重新定義父類中已有的方法。class Car int color_number; int door_number; int speed; public void push_break() speed = 0; public void add_oil() class Trash_Car extends Car double amount; public void fill_trash() public void push_break() speed = speed 10; n方法的重載(多態(tài)性)在同一個(gè)類中至少有兩個(gè)方法用同一個(gè)名字,但有不同的參數(shù)。類void s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新能源產(chǎn)業(yè)發(fā)展贊助協(xié)議范本
- 2025年度太空探索項(xiàng)目工人雇傭服務(wù)合同
- 2025年度房屋租賃代管及租客租賃押金管理服務(wù)合同
- 產(chǎn)品合作運(yùn)營合同范本
- 專賣代理銷售合同范本
- 買賣宅基地合同范本
- 科學(xué)膳食指南健康成長新篇章
- 科技助力下的教育領(lǐng)域網(wǎng)絡(luò)娛樂應(yīng)用探索
- 倉庫維修合同范本
- 社區(qū)環(huán)保行動(dòng)的推動(dòng)者-綠色超市
- 400字作文稿紙(方格)A4打印模板
- 不領(lǐng)證的夫妻離婚協(xié)議書
- 鋁型材企業(yè)組織架構(gòu)及部門職能
- 華為BEM戰(zhàn)略解碼體系完整版
- Python商務(wù)數(shù)據(jù)分析與實(shí)戰(zhàn)PPT完整全套教學(xué)課件
- 利用“自然筆記”提高小學(xué)生科學(xué)素養(yǎng)獲獎(jiǎng)科研報(bào)告
- 焓濕圖的應(yīng)用實(shí)例
- 2022-2023學(xué)年江蘇省揚(yáng)州市普通高校高職單招綜合素質(zhì)測試題(含答案)
- 小學(xué)科學(xué)教科版三年級下冊全冊課課練習(xí)題(2023春)(附參考答案)
- 《是誰覺醒了中國》
- 勞務(wù)派遣服務(wù)方案與服務(wù)流程圖
評論
0/150
提交評論