版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java程序設(shè)計第一章Java概述學習目標了解Java及其發(fā)展概況了解Java編程語言的主要特性了解Java的運行環(huán)境掌握Java程序的基本結(jié)構(gòu)熟悉Java程序的基本編程規(guī)范了解Java虛擬機的原理掌握Java應用程序的加載過程1.1 Java的歷史與發(fā)展1.Java的歷史Java是一種解釋型的、面向?qū)ο蟮木幊陶Z言。歷史:1991年,SUNMicroSystem公司的JameGosling、BillJoe等人為在電視、控制烤箱等家用消費類電子產(chǎn)品上進行交互式操作而開發(fā)了一個名為Oak的軟件。
Oak—>Java:互聯(lián)網(wǎng)給Java帶來新的生機
1995年Sun向公眾推出Java并引起業(yè)界的轟動發(fā)展:面向網(wǎng)絡(luò)應用,類庫不斷豐富,性能不斷提高,應用領(lǐng)域不斷拓展。(1995年以來)應用:Java是當今最流行的軟件開發(fā)語言之一,Sun推出了Java2&J2EE使Java具有更廣泛的用途,適用于各種應用開發(fā),尤其是網(wǎng)絡(luò)應用,網(wǎng)絡(luò)服務(wù),嵌入式系統(tǒng)等。Java的特點在Java語言白皮書中,Java被描述為“是一種簡單、面向?qū)ο?、分布式、解釋、健壯、安全、結(jié)構(gòu)中立、可移植、高效能、多線程、動態(tài)的語言”。2Java組成3JAVA平臺的擴展三個版本(1999.6)J2SE:Core/DesktopJ2EE:Enterprise/ServerJ2ME:Mobile/Wireless4Java的應用范圍據(jù)有關(guān)單位調(diào)查顯示,從開發(fā)領(lǐng)域的分布情況上看Web開發(fā)占了一半以上,為57.9%,JavaME移動或嵌入式應用占15%,C/S應用占11.7%,系統(tǒng)編程占15.4%。近30%的開發(fā)者用Java從事C/S應用或系統(tǒng)級應用的開發(fā)。具體的企業(yè)信息化,特別在企業(yè)級應用,如通信、金融電子政務(wù)及辦公自動化嵌入式設(shè)備及消費類電子產(chǎn)品太空領(lǐng)域應用范圍5.JAVA平臺的新發(fā)展JavaSE(JavaPlatform,StandardEdition)。JavaSE以前稱為J2SE。它允許開發(fā)和部署在桌面、服務(wù)器、嵌入式環(huán)境和實時環(huán)境中使用的Java應用程序。JavaSE包含了支持JavaWeb服務(wù)開發(fā)的類,并為JavaPlatform,EnterpriseEdition(JavaEE)提供基礎(chǔ)。JavaEE(JavaPlatform,EnterpriseEdition)。這個版本以前稱為J2EE。企業(yè)版本幫助開發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端Java應用程序。JavaEE是在JavaSE的基礎(chǔ)上構(gòu)建的,它提供Web服務(wù)、組件模型、管理和通信API,可以用來實現(xiàn)企業(yè)級的面向服務(wù)體系結(jié)構(gòu)(service-orientedarchitecture,SOA)和Web2.0應用程序。JavaME(JavaPlatform,MicroEdition)。這個版本以前稱為J2ME。JavaME為在移動設(shè)備和嵌入式設(shè)備(比如手機、PDA、電視機頂盒和打印機)上運行的應用程序提供一個健壯且靈活的環(huán)境。JavaME包括靈活的用戶界面、健壯的安全模型、許多內(nèi)置的網(wǎng)絡(luò)協(xié)議以及對可以動態(tài)下載的連網(wǎng)和離線應用程序的豐富支持?;贘avaME規(guī)范的應用程序只需編寫一次,就可以用于許多設(shè)備,而且可以利用每個設(shè)備的本機功能。
1.2JDK的安裝與配置Java開發(fā)工具包(JavaDevelopmentKit)簡稱JDK,它是用于構(gòu)建在Java平臺上發(fā)布的應用程序、Applet和組件的開發(fā)環(huán)境,也是一切Java應用程序的基礎(chǔ)所有的Java應用程序都是構(gòu)建在這個JDK之上,它包括了一個提供Java程序運行的虛擬機和一些運行支持的類庫文件,以及一些工具程序JDK版本歷史JDK版本發(fā)布日期版本說明JDK1.01995-5正式對外發(fā)布,直到1996年1月形成一個完整的版本。包括標準的I/O庫、網(wǎng)絡(luò)API、Applet、文件I/O及基本的窗口庫JDK1.11997-2內(nèi)部類、新的事件處理模型、RMI、JavaBean、JDBC、串行化、國際化、性能改進JDK1.21998-12浮點運算改進,Swing支持、集合、Java2D、可訪問性、引用對象及性能改進JDK1.32000-5稱為Kestrel。CORBA兼容性、Java音頻支持、JNDI及性能改進JDK1.42001-12稱為Merlin。斷言支持、64位空間、新的I/O庫、模式匹配、JavawebStart、IPv6、XML進一步性能改進等JDK1.52003-7稱為Tiger。通用性(代碼模塊)、某些運算符重載等JDK1.62006稱為Mustang。沒有新的語言特征,是一個以穩(wěn)定、提高為目的的版本。JDK1.72011新的語言特性、性能的改進1.2Java程序運行環(huán)境的安裝與配置第一步:下載JDKJava可以從Sun公司網(wǎng)站/免費下載(尋找合適的版本)JDK(JDK,JavaDevelopmentKit)包括Java編譯器(javac,JavaComplier)Java解釋器(java,Javainterpreter)文檔生成器(javadoc
,Documentationgenerator)…第二步:安裝點擊jdk的可執(zhí)行程序,開始安裝JRE的安裝第三步:環(huán)境配置-設(shè)置操作系統(tǒng)環(huán)境變量系統(tǒng)環(huán)境變量的設(shè)置JAVA_HOMEJDK的安裝目錄,如:C:\ProgramFiles\Java\jdk1.6.0_11CLASSPATH類的搜索路徑,如:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib\rt.jar;簡化CLASSPATH配置如果一個目錄(例如在d:\jars)下有很多.jar文件,可以按照如下方式配置:d:\jars\*系統(tǒng)環(huán)境變量的設(shè)置(cont.)PATH可執(zhí)行文件搜索路徑設(shè)置,例如java.exe,javac.exe等%JAVA_HOME%\bin注意編譯和執(zhí)行java程序時,編譯系統(tǒng)會自動到當前工作目錄、jdk安裝路徑下的lib目錄下尋找需加載的類。因此,可以簡化classpath變量的設(shè)置。檢查Java運行環(huán)境設(shè)置C:\>javaUsage:java[-options]class[args...](toexecuteaclass)orjava-jar[-options]jarfile[args...](toexecuteajarfile)C:\>javacUsage:javac<options><sourcefiles>…
…
…
…C:\>java–versionjavaversion"1.4.2_03"Java(TM)2RuntimeEnvironment,StandardEdition(build1.4.2_03-b02)JavaHotSpot(TM)ClientVM(build1.4.2_03-b02,mixedmode)1.3java程序的類型應用程序-JavaApplication獨立的Java程序程序入口方法:publicstaticvoidmain(String[]args){…}小應用程序-JavaApplet在Web瀏覽器中運行(內(nèi)嵌Java虛擬機)特定標記<APPLETCODE="HelloWorld.class"WIDTH=150HEIGHT=25></APPLET>特定的程序Servlet、EJB等1.3第一個Java應用程序/***程序1-1:一個向控制臺輸出字符串的應用程序*/publicclassHelloWorldApp{/*main方法是構(gòu)成Java應用程序執(zhí)行不可缺少的部分
@paramargs一個String類型的數(shù)組
*/publicstaticvoidmain(String[]args){ System.out.println("HelloWorld!");//向控制臺輸出
}}第一步:打開任一個文本編輯器,將前述內(nèi)容添加進去,創(chuàng)建一個源程序文件??紤]好類名,選一個有意義的英文名字,如HelloWorldApp寫好類的聲明添加main方法保存文件,文件名和類名要完全保持一致(包括大小寫),文件后綴是.java。什么是源程序源程序(也稱源代碼),是指一系列人類可讀的計算機語言指令。計算機程序包括源程序和目標程序。同一程序的源文本和目標文本應當視為同一作品。源程序是指用高級語言或匯編語言編寫的程序。目標程序,是指可在計算機運行的程序。一般源程序都需要經(jīng)過某種翻譯過程,形成計算機可理解的指令代碼。翻譯的兩種方式,即編譯方式和解釋方式。編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統(tǒng)軟件存放在計算機內(nèi),當用戶將高級語言編寫的源程序輸入計算機后,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標程序,然后計算機再執(zhí)行該目標程序,以完成源程序要處理的運算并取得結(jié)果(如Java、C、VC++等)。解釋方式是指源程序進入計算機后,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯,計算機一句句執(zhí)行,并不產(chǎn)生目標程序(如JavaScript)。第二步:編譯源程序,產(chǎn)生字節(jié)碼文件進入命令提示符窗口利用cd命令切換當前路徑到源程序所在目錄執(zhí)行命令javacHelloWorldApp.java檢查目錄下是否生成HelloWorldApp.class文件,如果有,則表示結(jié)果正確第三步:執(zhí)行該程序保持命令提示符窗口執(zhí)行命令javaHelloWorldApp查看結(jié)果和其他語言開發(fā)過程的比較Java程序開發(fā)步驟(編碼,編譯,解釋,執(zhí)行
)C程序開發(fā)步驟(編碼,編譯,執(zhí)行
)類的定義關(guān)鍵字class-表示要定義一個類(模板),一個類在結(jié)構(gòu)上包含數(shù)據(jù)變量和方法,表示功能的語句總是包含在方法中。1.3.2JAVA應用程序編程原則publicclass
Dog{Stringname;publicvoidbark(){ System.out.println(“brak!");}}定義類文件public修飾的類名稱必須與包含它的Java源程序文件名一致publicclassDog{ ...}則文件名一定要是:Dog.java并且大小寫敏感(一致)
1.3.2JAVA應用程序編程原則總之,類文件的定義一個Java應用程序至少包含一個類。一個Java源文件一般只包含一個類定義。一個類可以是一個空類,不包含任何屬性定義和方法聲明。聲明一個類時,其類名的第一個字母應該大寫。類名通常是有意義的。主方法(mainMethod)每個Java應用程序必須有且只能有的一個方法,它是程序執(zhí)行的入口,運行時被虛擬機自動執(zhí)行該方法的聲明格式是固定的,不能變更方法被程序調(diào)用而執(zhí)行,并不會自動執(zhí)行1.3.2JAVA應用程序編程原則publicclassDog{publicvoidbark(){System.out.println(“brak!");}publicstaticvoidmain(String[]args){ Dogd=newDog(); d.bark(); }}類和變量的引用一個類中引用其他類,要注意在文件頭,使用import加載java.lang包中的類不需要明確import引用一個類或?qū)ο蟮淖兞亢头椒?,要通過“.”實現(xiàn)引用JAVA應用程序編程原則importjava.util.Date;publicclassHelloWorld{ publicstaticvoidmain(String[]args){Datenow=newDate();
System.out.println(now); }}類和包介紹類是描述提供某種功能的模塊的一般術(shù)語。Java開發(fā)集(JDK)給出了一套標準的類(稱作類庫),這些類可執(zhí)行大部分所需的基本行為不僅為編程任務(wù)(例如,類可提供基本的數(shù)學函數(shù)、數(shù)組和字符串),而且為圖形和網(wǎng)絡(luò)程序開發(fā)提供了豐富的支持。類庫被組織成許多包,每個包都包含幾個類。如下所列為一些重要的包:java.lang包含一些形成語言核心的類,如String、Math、Integer和Thread。java.awt包含了構(gòu)成抽象窗口工具包(AWT)的類,這個包被用來構(gòu)建和管理應用程序的圖形用戶界面。java.applet包含了可執(zhí)行applet特殊行為的類。包含執(zhí)行與網(wǎng)絡(luò)相關(guān)的操作的類和處理接口及統(tǒng)一資源 定位器(URLs)的類。java.io包含處理I/O文件的類。java.util包含為任務(wù)設(shè)置的實用程序類,如隨機數(shù)發(fā)生、定義系統(tǒng)特性和使用與日期日歷相關(guān)的函數(shù)。書寫規(guī)范每個程序應以說明程序目的,作者,日期和時間的注釋開始;使用空格和空行可以提高程序可讀性;花括號對“{}”-類,方法,語句塊語句分號“;”結(jié)尾縮進:當程序中輸入一對花括號,然后把光標重新定位到兩個括號之間,先縮進一級,再開始輸入程序體,該習慣有利于防止漏掉括號的錯誤JAVA應用程序編程原則importjava.util.*;publicclassArrayDemo{ publicstaticvoidmain(String[]args){ int[]a={10,7,9,2,4,5,1,3,6,8}; Arrays.sort(a); Set<String>week=newHashSet<String>(); Iterator<String>it=week.iterator(); week.add("hello"); for(Stringstr:week){ System.out.println(str); } }}對齊關(guān)系密切的行應對齊,對齊包括類型、修飾、名稱、參數(shù)等各部分對齊。連續(xù)賦值時當對齊操作符。當方法參數(shù)過多時當在每個參數(shù)后(逗號后)換行并對齊。當控制或循環(huán)中的條件比較長時當換行(操作符前)、對齊并注釋各條件。變量定義最好通過添加空格形成對齊,同一類型的變量應放在一起。//變量對齊-----------------------------------------------intcount=100;StringstrUserName=null;Integer[]porductCode=newInteger(2);//產(chǎn)品編碼數(shù)組//參數(shù)對齊----------------------------------------------publicConnectiongetConnection(Stringurl,StringuserName,Stringpassword)throwsSQLException,IOException{}//換行對齊----------------------------------------------publicfinalstaticStringSQL_SELECT_PRODUCT=“SELECT*“+“FROMTProductWHEREProd_ID=”+prodID;//條件對齊----------------------------------------------if(Condition1//當條件一
&&Condition2//并且條件二
||Condition3){//或者條件三}命名規(guī)范類:類名是個一名詞,采用大小寫混合的方式,每個單詞的首字母大寫。方法:方法名是一個動詞,采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。 變量:除了變量名外,所有實例,包括類,類常量,均采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。變量名不應以下劃線或美元符號開頭,盡管這在語法上是允許的。變量名應簡短且富于描述。變量名的選用應該易于記憶,即,能夠指出其用途。盡量避免單個字符的變量名,除非是一次性的臨時變量。 常量:類常量和ANSI常量的聲明,應該全部大寫,單詞間用下劃線隔開。(盡量避免ANSI常量,容易引起錯誤)注釋注釋應該增加代碼的清晰度。代碼注釋的目的是要使代碼更易于被其他開發(fā)人員等理解。避免使用裝飾性內(nèi)容。保持注釋的簡潔。注釋信息不僅要包括代碼的功能,還應給出原因。不要為注釋而注釋。除變量定義等較短語句的注釋可用行尾注釋外,其他注釋當避免使用行尾注釋。注解方式(Comments)/**注釋內(nèi)容*/-文檔注解/*注釋內(nèi)容*/-程序內(nèi)的任意位置//注釋內(nèi)容-對本行注解文檔注釋(被稱為"doccomments")是Java獨有的,并由/**...*/界定。文檔注釋可以通過javadoc工具轉(zhuǎn)換成HTML文件。文檔注釋描述Java的類、接口、構(gòu)造器,方法,以及字段(field)。每個文檔注釋都會被置于注釋定界符/**...*/之中,一個注釋對應一個類、接口或成員。該注釋應位于聲明之前:
/***Classdescriptiongoeshere.**@version1.1.0*@authorFirstnameLastname*/publicclassBlahextendsSomeClass{… /** *...methoddoSomethingElsedocumentationcomment... *@paramsomeParamdescription */ publicvoiddoSomethingElse(ObjectsomeParam){ //...implementationgoeshere... }}塊注釋通常用于提供對文件,方法,數(shù)據(jù)結(jié)構(gòu)和算法的描述。塊注釋被置于每個文件的開始處以及每個方法之前。它們也可以被用于其他地方,比如方法內(nèi)部。在功能和方法內(nèi)部的塊注釋應該和它們所描述的代碼具有一樣的縮進格式。/*-*Hereisablockcommentwithsomeveryspecial*formattingthatIwantindent(1)toignore.**one*two*three*/行末注釋(End-Of-LineComments)注釋界定符"http://",可以注釋掉整行或者一行中的一部分。它一般不用于連續(xù)多行的注釋文本;if(foo>1){
//Doadouble-flip....}else{returnfalse;//Explainwhyhere.}1.3.4排除常犯的錯誤聲明一個類的關(guān)鍵字class,寫成了Class,要注意大小寫。聲明main方法時,方法修飾符沒有嚴格按照publicstaticvoid的順序,并且其參數(shù)是一個字符串數(shù)組String[]
大小寫問題,例如把main方法的參數(shù)args的類型String[],改成了string[],把System寫成了system。'JAVAC'isnotrecognizedasaninternalorexternalcommand,operableprogramorbatchfile.
解釋:編譯錯誤。包含javac.exe編譯器的路徑變量設(shè)置不正確,操作系統(tǒng)無法發(fā)現(xiàn)該執(zhí)行文件。類名和文件名不能保持一致。如:HelloWorldAp.java:5:classHelloWorldAppispublic,shouldbedeclaredinafilenamedHelloWorldApp.javapublicclassHelloWorldApp{解釋: 編譯錯誤。當一個類被“public”修飾時,包含這個類的文件名應該和該類名完全一致。不能發(fā)現(xiàn)需要執(zhí)行的類。如:
Exceptioninthread"main"java.lang.NoClassDefFoundError:HelloWorldApp解釋:運行錯誤。有時即使該類的字節(jié)碼文件就在當前目錄下,也會報這種錯誤。這種錯誤的主要原因是由于沒有為運行時環(huán)境提供正確的類加載說明,詳細說明請參閱附錄。HelloWorldApp.java:10:cannotresolvesymbol symbol:methodprintl(java.lang.String) location:classjava.io.PrintStream1.4Java的工作原理Java的結(jié)構(gòu)JavaProgramJavaVirtualMachineJavaAPISYourComputerSystemJava的編譯與執(zhí)行1.4.2Java應用程序執(zhí)行過程1.加載加載就是把二進制形式的字節(jié)碼讀入虛擬機中。加載過程是由類加載器完成的,該加載器是ClassLoader的子類。2.鏈接鏈接是取得加載的類或接口,并將其與JVM運行時環(huán)境結(jié)合起來,以準備執(zhí)行的過程,這個過程包括檢驗,準備和解析三個步驟。3.初始化如果類存在對非final靜態(tài)變量的賦值,或者static代碼段,在編譯時會隱式生成一個cinit()方法,即初始化執(zhí)行的方法體。1.4.3Java虛擬機不同的操作系統(tǒng)有不同的虛擬機。它類似一個小巧而高效的CPU。Bytecode代碼是與平臺無關(guān)的是虛擬機的機器指令。Java字節(jié)代碼運行的兩種方式:Interpreter(解釋方式)Just-in-time(即時編譯):有代碼生成器將字節(jié)代碼轉(zhuǎn)換成本機的機器代碼,然后可以以較高速度執(zhí)行.虛擬機的任務(wù)提供垃圾回收功能提供運行時環(huán)境提供中立的體系結(jié)構(gòu)JVM運行時的數(shù)據(jù)區(qū)結(jié)構(gòu)方法區(qū)方法區(qū)是由所有JVM線程共享的一個公共存儲區(qū)。方法區(qū)存儲類的裝基本信息、常量池、靜態(tài)變量、字段信息、方法信息、一個到類ClassLoader的引用,一個到Class類的引用。堆堆是一個自由內(nèi)存區(qū)域,常用于內(nèi)存的動態(tài)分配或臨時分配。堆是一種運行時數(shù)據(jù)區(qū),為類和數(shù)組對象提供內(nèi)存。JVM在啟動時創(chuàng)建堆,然后當Java中創(chuàng)建類或數(shù)組對象時,就從堆中分配所需內(nèi)存。當對象或數(shù)組不再存在后,由一個稱為垃圾收集的自動存儲管理系統(tǒng)來回收堆內(nèi)存。棧每一個線程都有自己私有的一個JAVA棧,任何線程不能調(diào)用其它線程的棧,Java的棧幀用于存儲方法調(diào)用的狀態(tài)。當線程調(diào)用一個方法的時候,JVM會在該線程的JAVA棧上壓入一個新幀。自然該幀成為當前幀,在執(zhí)行該方法期間,線程用該幀來儲存參數(shù),局部變量和中間運算結(jié)果等。JAVA方法執(zhí)行有兩種情況,一種是正常執(zhí)行完成return,另一種是異常拋出中止。虛擬機都會將當前的棧幀出棧。棧與堆
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度食用菌產(chǎn)業(yè)投資基金銷售合同3篇
- 2025年南陽貨運上崗證模擬考試題
- 2025年洛陽貨運考試題庫
- 四川省遂寧市射洪市射洪中學校2023-2024學年八年級上學期10月月考物理試題
- 2024年版高層管理人員崗位責任合同
- 2024年時尚新品發(fā)布攤位租賃合同新品推廣合作協(xié)議3篇
- 2024年版工地建筑工人工期合同
- 2025房地產(chǎn)買賣合同逐條詳解
- 2024年版標準公交出租車租賃協(xié)議范例版B版
- 2025混凝土罐車車租賃合同
- K線圖入門教程大全一
- 2024年法律知識法治建設(shè)知識競賽-中醫(yī)藥行業(yè)普法知識競賽歷年考試高頻考點試題附帶答案
- 區(qū)塊鏈技術(shù)在IT運維中的應用
- 《寬容開放兼容并蓄》課件
- 廣西壯族自治區(qū)南寧市2023-2024學年五年級上學期期末英語試題
- 2024螺桿灌注樁技術(shù)規(guī)程
- 客人醉酒服務(wù)流程
- 梯子安全使用管理規(guī)程
- 廣州美食研究報告
- 2022-2023學年佛山市禪城區(qū)六年級數(shù)學第一學期期末達標測試試題含解析
- 王者戰(zhàn)隊群管理制度
評論
0/150
提交評論