版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java教程目錄第一章Java入門第二章面向?qū)ο缶幊痰谌聵?biāo)識符、關(guān)鍵字和數(shù)據(jù)類型第四章表達(dá)式和流程控制基于J2SE7.0進(jìn)行GUI編程第五章數(shù)組第六章類設(shè)計(jì)第七章高級類特性第八章異常和斷言第十章建立JavaGUI第十一章GUI事件處理第十二章基于GUI的應(yīng)用程序第十三章線程第十四章高級I/O流第十五章網(wǎng)絡(luò)連接第十六章注解與反射第十七章JDBC簡介第十八章使用JDBC高級特性第九章基于文本的應(yīng)用程序基于J2SE7.0進(jìn)行GUI編程----引言一、Java發(fā)展歷史
1990年12月,Sun的工程師Patrick(帕特里克)和JamesGosling(詹姆斯.加索林)為嵌入式設(shè)備開發(fā)一種新的基礎(chǔ)平臺技術(shù),項(xiàng)目名為"Green",JamesGosling在使用C++做開發(fā)時(shí),碰了一頭包,所以決定開發(fā)一種新的編程語言來實(shí)現(xiàn)這個項(xiàng)目,這個小語言隨后被命名為Oak(橡樹)。
1992年9月,Oak語言連同GreenOS(操作系統(tǒng))和一些應(yīng)用程序被用于投標(biāo)時(shí)代華納公司的機(jī)頂盒項(xiàng)目,但因?yàn)楣δ芴珡?qiáng)大給客戶太多權(quán)利遭遇失敗。
1993年的美國,互聯(lián)網(wǎng)發(fā)展迅猛,1994年,Sun定位互聯(lián)網(wǎng),與此同時(shí)Sun將Oak命名為Java(爪哇,一種咖啡的名稱),并用此針對互聯(lián)網(wǎng)開發(fā),誕生了Applet(瀏覽器java小應(yīng)用程序),在瀏覽器端炫目的表現(xiàn)征服了互聯(lián)網(wǎng)開發(fā)者,并一發(fā)不可收拾。
1995年,Sun正式對外公布了Java,并且發(fā)布了JDK1.0,即JavaDevelopmentKit,Java開發(fā)人員工具包。這種外形酷似C++,卻包含一顆Smalltalk般純潔的面向?qū)ο笾牡娜鲁绦蛟O(shè)計(jì)語言及其平臺,幾乎在一夜之間就成為軟件產(chǎn)業(yè)的新寵兒。
1996年,Sun正式發(fā)布Java1.0,同時(shí)召開第一屆"JavaOne"大會。引起了當(dāng)時(shí)眾多知名廠商追隨,包括NetScape(網(wǎng)景)、惠普、IBM、Oracle、Sybase等公司。
1997年,Sun發(fā)布JDK1.1,微軟VJ++6.0加入支持、JBuilder加入支持。基于J2SE7.0進(jìn)行GUI編程----引言1998-1999年,Sun發(fā)布JDK1.2(Java2SDKv1.2StandardEdition),將Java版本更名為2.0。同時(shí)將Java定位三個方向,即Java2StandardEdition(J2SE),Java2EnterpriseEdition(J2EE),Java2MicroEdition(J2ME)。J2SE定位于基于桌面應(yīng)用開發(fā),J2EE定位于基于企業(yè)級服務(wù)器端應(yīng)用開發(fā),J2ME定位于嵌入式設(shè)備(包括手機(jī))應(yīng)用開發(fā)。其中J2EE后來得到了飛速發(fā)展,同時(shí)J2ME也在嵌入式開發(fā),猶其手機(jī)開發(fā)中得到了廣泛應(yīng)用,但J2SE中的AWT(抽象窗口工具包)/Swing(圖象處理包)卻使終被人們所詬病。
2000-2001年,Sun發(fā)布J2SE(Java2StandardEdition)1.32001年,Sun發(fā)布J2EE(Java2EnterpriseEdition)1.32002年,Sun發(fā)布J2SE1.4,自此Java的計(jì)算能力有了大幅提升。2002年,Sun發(fā)布J2EE1.42004年,Sun發(fā)布J2SE1.5,并同時(shí)更名為J2SE5.0
2005年,JavaOne大會召開,SUN公司公開JavaSE6.0,并同時(shí)將Java的各種版本名稱中的數(shù)字"2"取消:J2EE更名為JavaEE,J2SE更名為JavaSE,J2ME更名為JavaME。
2006年,SUN公司宣布Java全線采納GNUGeneralPublicLicenseVersion2(GNU通用公共許可證),從而公開了Java的源代碼。到現(xiàn)在為此,Java最成熟的應(yīng)用仍然J2EE,在嵌入式設(shè)備中J2ME發(fā)展的也相當(dāng)不錯,J2ME需要它自己的JDK,而J2EE需要以J2SE做為基礎(chǔ)。目前J2EE用的最多的還是J2EE1.4版本,JavaEE是J2EE的最新版本,引入了JDK5.0及6.0新的特性與技術(shù)。
Sun是java的發(fā)明者,但是卻幾乎沒有從java身上掙到一分錢,java的最大受益者是IBM,其次是Bea、oracle等?;贘2SE7.0進(jìn)行GUI編程----引言
二、Java的三個版本:Java2.0(JDK1.2)開始,JDK分為三個版本J2EE(企業(yè)級版本)J2SE(標(biāo)準(zhǔn)版本)J2ME(微型版本)J2ME基于J2SE7.0進(jìn)行GUI編程----第一章Java入門本章主要介紹了Java的特性、Java核心技術(shù)的實(shí)現(xiàn)及功能,并通過一個簡單的Java應(yīng)用程序介紹了如何對Java程序進(jìn)行編寫、編譯及運(yùn)行,同時(shí)對編譯及運(yùn)行時(shí)錯誤進(jìn)行處理。1.1什么是JavaTM技術(shù)?首先,Java是一種編程語言;其次,Java還是一種開發(fā)環(huán)境;再次,Java還是一種應(yīng)用程序環(huán)境;最后,Java是一種部署環(huán)境。
Java編程語言的語法與C++(包括C#)的語法相似。任何傳統(tǒng)編程語言所能創(chuàng)建的應(yīng)用程序,都可以用Java編程來創(chuàng)建。作為開發(fā)環(huán)境,Java提供了一系列的工具來實(shí)現(xiàn)軟件開發(fā)。包括:Java編譯器、解釋器、產(chǎn)品文檔生成器、類文件打包工具等。
Java提供了對多種環(huán)境的支持,包括萬維網(wǎng)(Web)及瀏覽器環(huán)境,在萬維網(wǎng)(Web)服務(wù)器端Java提供了J2EE技術(shù)以開發(fā)基于互聯(lián)網(wǎng)的企業(yè)級應(yīng)用開發(fā)環(huán)境。在瀏覽器環(huán)境,Java提供了Java應(yīng)用小程序(Applet)來實(shí)現(xiàn)瀏覽器端特殊效果及功能的開發(fā),Applet駐留在Web服務(wù)器中,但在瀏覽器端被下載并于瀏覽器中執(zhí)行,而且它可以與HTML進(jìn)行交互。
Java應(yīng)用程序是獨(dú)立的應(yīng)用程序,并可以跨平臺在多種環(huán)境中被執(zhí)行。只要在相應(yīng)的平臺中安裝了該平臺的Java運(yùn)行時(shí)環(huán)境(JRE,JavaRuntimeEnvironment)。Sun公司、IBM、Bea、Oracle等都開發(fā)了相應(yīng)版本的JRE,可用于不同的操作系統(tǒng)及平臺。Java遵循"一次編寫,到處運(yùn)行"的跨平臺理論,這使得Java風(fēng)靡全球?;贘2SE7.0進(jìn)行GUI編程----第一章Java入門
Java有兩個主要的部署環(huán)境,第一個是Java2SDK(Java2軟件開發(fā)工具包)中的JRE,它提供了標(biāo)準(zhǔn)的Java開發(fā)、編譯及運(yùn)行環(huán)境,是最主要的部署環(huán)境;第二個是適用于Web瀏覽器的JRE,大多數(shù)瀏覽器廠商都提供了瀏覽器環(huán)境的解釋器和運(yùn)行環(huán)境JRE。1.2Java技術(shù)的主要目標(biāo)
Java語言由C++發(fā)展而來,但Java語言是簡單的易于使用的編程語言。從歷史角度來說:
Java語言="C++語言"–"C++中的復(fù)雜性和奇異性"+"安全性和可移植性"1、易于編程的語言
1)摒棄了C++中容易引發(fā)程序錯誤的一些特性及復(fù)雜特性,如指針及內(nèi)存管理,并能進(jìn)行自動內(nèi)存管理,不用象C++一樣需要自己管理內(nèi)存的分配與釋放。
2)完全面向?qū)ο笞詈诵牡臇|西是類與對象OO語言以類的形式組織代碼并具有封裝、繼承、多態(tài)特性
3)、提供了豐富的類庫,即SDK(SoftwareDevelopmentKit,軟件開發(fā)包),使用這些類庫有助于你簡化代碼
2、解釋環(huán)境的特性:
1)、開發(fā)速度大大提高:縮短編譯—鏈接—加載時(shí)間,縮短測試周期
2)、代碼可移植性:解釋環(huán)境執(zhí)行的是非常接近于機(jī)器語言代碼的Java二進(jìn)制代碼,所以僅與JVM(JavaVirtualMachine)有關(guān),與操作系統(tǒng)無關(guān),這導(dǎo)致代碼可以容易在多個操作系統(tǒng)中運(yùn)行。五月花NIIT軟件開發(fā)基于J2SE7.0進(jìn)行GUI編程----第一章Java入門
3、支持多線程編程,提高應(yīng)用程序性能
4、允許程序下載代碼模塊,使得在程序運(yùn)行時(shí)周期內(nèi)可動態(tài)改變程序的方法
5、通過檢查加載的代碼模塊來確定代碼安全性(類加載器)
為了實(shí)現(xiàn)上述Java目標(biāo)與特性,Java使用了自己獨(dú)立的核心技術(shù):
1、JVM:JavaVirtualMachine虛擬機(jī),這是Java技術(shù)得以實(shí)現(xiàn)的最重要的技術(shù)和核心技術(shù),不同的操作系統(tǒng)甚至手機(jī)操作系統(tǒng)都有不同的JVM版本,只要安裝了相應(yīng)版本的JVM,你的系統(tǒng)就支持Java程序。JVM通常是集成中JRE中。2、垃圾回收(GC):
Java使用垃圾回收技術(shù)實(shí)現(xiàn)自動內(nèi)存管理、碎片收集,防止了內(nèi)存分配問題,提高了開發(fā)效率。3、Java運(yùn)行時(shí)環(huán)境JRE:通過JRE對程序進(jìn)行解釋、實(shí)時(shí)編譯從而執(zhí)行Java代碼。
4、JVM應(yīng)用程序接口(API):即Java核心類庫1.2.1Java虛擬機(jī)JVM
JVM指的是在真實(shí)的計(jì)算機(jī)中使用用軟件模擬實(shí)現(xiàn)的一種虛擬機(jī)器。JVM只能運(yùn)行非常接近本地硬件及操作系統(tǒng)的二進(jìn)制代碼(字節(jié)碼,bytecode),這些代碼必須存儲在.class文件中,每個.class文件最多包含一個public類,這個類我們稱之為主類。
JVM提供了編譯所有Java技術(shù)代碼的硬件平臺規(guī)范,這個規(guī)范與任何一個具體的操作系統(tǒng)及硬件都沒有任何關(guān)系,所以JVM是使用Java軟件技術(shù)規(guī)范實(shí)現(xiàn)的通用機(jī)?;贘2SE7.0進(jìn)行GUI編程----第一章Java入門通過使用Java編譯器(javac程序)可以將Java源程序文件(.java文件)編譯為Java字節(jié)碼文件(.class文件)。字節(jié)碼是JVM的這個虛擬機(jī)器的機(jī)器語言指令代碼,但它并不是當(dāng)前操作系統(tǒng)及硬件能夠直接執(zhí)行的機(jī)器語言代碼。
Java應(yīng)用程序主要包括兩大類:JavaApplication應(yīng)用程序和JavaApplet小應(yīng)用程序。分別運(yùn)行于標(biāo)準(zhǔn)平臺和瀏覽器環(huán)境。無論哪種應(yīng)用程序,都需要一個JVM的實(shí)現(xiàn)。
JVM規(guī)范定義為:一套指令系統(tǒng)(類似于CPU指令系統(tǒng))、一組寄存器、類文件格式、運(yùn)行時(shí)堆棧、垃圾回收堆、一個內(nèi)存區(qū)、致命錯誤報(bào)告機(jī)制和高精度計(jì)時(shí)支持。
JVM的代碼格式由簡潔、高效的字節(jié)碼構(gòu)成。Java仍然是一個嚴(yán)格的面向?qū)ο蟮木幊陶Z言,所以絕大部份錯誤都將在編譯時(shí)被檢查出來。這保證了字節(jié)碼的健壯與安全特性。不同的操作系統(tǒng)平臺有不同的JVM。而且不同的公司有不同JVM,IBM公司有IBM公司的JVM,Bea公司有Bea的JVM(JRockit),Sun公司有Sun的JVM(Hotspot)。無論在linux/unix或Windows平臺上,Bea的JRockit與IBM的JVM性能表現(xiàn)不相上下,Bea稍快。而Sun的JVM(Hotspot)性能都要慢很多,Sun的Hotspot在Linux/unix下的表現(xiàn)要比在Windows下的表現(xiàn)差。所以Sun的JVM比較適合做開發(fā),而客戶目標(biāo)平臺上常常使用Bea或者IBM的JVM。
Java字節(jié)碼沒有保存特定平臺的信息,具體與特定平臺交互由JVM實(shí)現(xiàn)。基于J2SE7.0進(jìn)行GUI編程----第一章Java入門注:SPARC,全稱為"可擴(kuò)充處理器架構(gòu)"(ScalableProcessorARChitecture),是RISC微處理器架構(gòu)之一。是Sun公司推出的,最多支持1000個處理器CPU。SPARC處理器是Sun的命脈,以UltraSPARC為基礎(chǔ)的Unix服務(wù)器為Sun帶進(jìn)大量營收收入,包括在這個平臺上Sun實(shí)現(xiàn)的SolarisOS操作系統(tǒng)。MIPSPPC是嵌入式設(shè)備處理器,RTOS為嵌入式設(shè)備操作系統(tǒng),即實(shí)時(shí)操作系統(tǒng)?;贘2SE7.0進(jìn)行GUI編程----第一章Java入門1.2.2垃圾回收在C、C++等語言中,程序員往往在編寫程序時(shí),常常需要使用內(nèi)存、分配內(nèi)存,并且程序員還需要手工釋放所用的內(nèi)存,否則可能帶來系統(tǒng)崩潰和內(nèi)存泄露等嚴(yán)格安全及穩(wěn)定問題。而java支持垃圾回收,程序員現(xiàn)在可以不用再為手工釋放程序占用的內(nèi)存而煩惱了,這將由垃圾回收器(GC)幫助我們自動完成,垃圾回收器自動檢查對象是否被引用,如果對象沒有被任何其它對象引用,垃圾回收器將回收此對象。垃圾回收在JavaVM的整個生命周期中自動進(jìn)行,它消除了手工釋放內(nèi)存的問題并避免了內(nèi)存泄露,大大提高了軟件的開發(fā)周期。不同的JVM對垃圾回收的實(shí)現(xiàn)可能不同。1.2.3Java運(yùn)行時(shí)環(huán)境JRE一、JDK技術(shù):JDK(JavaSoftwareDevelopmentKit,Java軟件開發(fā)包)
JDK(JavaSoftwareDevelopmentKit)是SunMicrosystems針對Java開發(fā)員的產(chǎn)品。自從Java推出以來,JDK已經(jīng)成為使用最廣泛的JavaSDK(SoftwareDevelopmentkit)。JDK是整個Java的核心,包括了Java運(yùn)行環(huán)境(JavaRuntimeEnvironment,即JRE),一堆Java工具和Java基礎(chǔ)的類庫(例如rt.jar)。不論什么Java應(yīng)用服務(wù)器實(shí)質(zhì)都是內(nèi)置了某個版本的JDK。因此掌握J(rèn)DK是學(xué)好Java的第一步。最主流的JDK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開發(fā)了自己的JDK,例如IBM、BEA等。JDK的主要目的是利用JDK所提供的工具將Java源程序(.java文件)基于J2SE7.0進(jìn)行GUI編程----第一章Java入門編譯為Java字節(jié)碼文件(.class文件),同時(shí)JDK也提供了我們開發(fā)人員所必須的Java基礎(chǔ)類庫。JDK從1.0到現(xiàn)在的1.6,經(jīng)歷了多個版本,JDK從1.5版本開始不再稱之為1.5了而是稱之為5.0,例如JDK1.6已經(jīng)改名為JDK6.0,雖然有很多人仍然沿用習(xí)慣,但Sun官方版本命名已改變。在JDK5.0中,Java引入了枚舉、泛型、注解等很多新特性。每個JDK版本安裝后,都會自動安裝相應(yīng)版本的JRE。二、JRE技術(shù)(JavaRuntimeEnvironment,Java運(yùn)行環(huán)境)JRE為JavaRunTimeEnvirment的簡稱,它是指運(yùn)行JAVA程序所必須的環(huán)境的集合,包含JVM標(biāo)準(zhǔn)實(shí)現(xiàn)及Java核心類庫。JRE又分為兩類:
1)、JavaApplication(Java應(yīng)用程序)依賴的JRE(JavaRuntimeEnvironment):
JavaRuntimeEnvironment(JRE)是可以在其上運(yùn)行、測試和傳輸應(yīng)用程序的Java平臺。它包括Java虛擬機(jī)、Java平臺核心類庫和支持文件(JavaAPI)。它不包含開發(fā)工具--編譯器、調(diào)試器和其它工具,僅包含運(yùn)行環(huán)境。
JavaApplication包括Java開發(fā)的桌面應(yīng)用程序,服務(wù)器端組件,Web應(yīng)用程序、手機(jī)應(yīng)用程序、嵌入式應(yīng)用程序等。
2)、JavaApplet(Java小應(yīng)用程序)依賴的JRE(JavaPlug-in瀏覽器插件):JavaPlug-in瀏覽器插件主要目的是為了便于在瀏覽器中運(yùn)行JavaApplet。JavaPlug-in軟件允許JavaApplet和JavaBean組件在相應(yīng)瀏覽器中運(yùn)行。JavaPlug-in插件可用于Netscape
Navigator、FireFox和MicrosoftInternetExplorer等支持Java的所有瀏覽器?;贘2SE7.0進(jìn)行GUI編程----第一章Java入門JavaApplet(Java小應(yīng)用程序)是指只能在客戶端瀏覽器中運(yùn)行的Java小程序。如果你要自行開發(fā)Java軟件,請下載JDK。在JDK中附帶有JRE。注意由于Microsoft對Java的支持不完全,請不要使用IE自帶的Java虛擬機(jī)來運(yùn)行Applet,務(wù)必安裝一個相應(yīng)瀏覽器版本的JRE或JDK。
在客戶目標(biāo)計(jì)算機(jī)上,我們只需要安裝相應(yīng)版本的JRE就可以讓Java程序或者Applet運(yùn)行起來。JRE的版本一般與JDK版本相對應(yīng),例如JDK1.6與JRE1.6等。下圖展示了JRE以及JRE是如何增強(qiáng)代碼安全的。編譯javac從硬盤、網(wǎng)絡(luò)或其它資源加載類加載器字節(jié)碼校驗(yàn)器解釋器運(yùn)行時(shí)底層硬件java運(yùn)行時(shí)編譯得到字節(jié)碼文件字節(jié)碼文件被加載解釋執(zhí)行在運(yùn)行時(shí),Java字節(jié)碼被加載、檢驗(yàn)并在解釋器中運(yùn)行。如果執(zhí)行Applet,則瀏覽器下載字節(jié)碼文件,在瀏覽器內(nèi)存的JVM中解釋執(zhí)行。解釋器需要實(shí)現(xiàn)兩大代能:執(zhí)行字節(jié)碼以及正確調(diào)用底層硬件資源。基于J2SE7.0進(jìn)行GUI編程----第一章Java入門
在Java運(yùn)行時(shí)環(huán)境(JRE)中,需要將Java字節(jié)碼解釋然后再執(zhí)行,然而這降低了代碼的執(zhí)行速度。因此,Java將字節(jié)碼在運(yùn)行時(shí)編譯成本地機(jī)器語言代碼,并直接在硬件平臺上執(zhí)行,從而提高代碼執(zhí)行速度,這樣代碼的運(yùn)行速度將非常接近于C以及C++,但因?yàn)橐谶\(yùn)行時(shí)進(jìn)行編譯,這會帶來少許加載時(shí)間的延遲,以使得代碼能夠編譯為本機(jī)代碼。這需要使用Java的JIT(JustInTime)即時(shí)編譯器來完成。編譯javac從硬盤、網(wǎng)絡(luò)或其它資源加載類加載器字節(jié)碼校驗(yàn)器解釋器運(yùn)行時(shí)底層硬件java運(yùn)行時(shí)編譯得到字節(jié)碼文件字節(jié)碼文件被加載解釋執(zhí)行帶有即時(shí)編譯器(JIT)的JRE代碼編譯及執(zhí)行過程JIT代碼生成器基于J2SE7.0進(jìn)行GUI編程----第一章Java入門1.2.4JVM任務(wù)
JVM主要有三個任務(wù):加載代碼、校驗(yàn)代碼、執(zhí)行代碼。一、類加載器-加載代碼:類加載器加載程序執(zhí)行所需的全部類。類加載器通過將本地文件系統(tǒng)的類命名空間與網(wǎng)絡(luò)源導(dǎo)入的類命名空間分隔開來,以增加安全性。由于總是首先加載本地類,因而可以限制任何"特洛依木馬"程序的運(yùn)行。當(dāng)全部類被加載后,可執(zhí)行文件的內(nèi)存布局就確定了。這時(shí),符號引用被賦值為具體的內(nèi)存地址,并創(chuàng)建了內(nèi)存變量的查詢表。由于內(nèi)存布局在運(yùn)行時(shí)產(chǎn)生,Java技術(shù)解釋器增加了保護(hù),以防止對受限代碼區(qū)的未授權(quán)訪問,從而提高了程序的安全。二、字節(jié)碼校驗(yàn)器:
Java軟件代碼在計(jì)算機(jī)上實(shí)際運(yùn)行之前要經(jīng)過幾次測試。JVM通過字節(jié)碼校驗(yàn)器對代碼進(jìn)行測試,以檢查非法代碼段,以防止非法偽造指針、違反對象訪問權(quán)限或試圖改變對象類型的代碼。所有網(wǎng)絡(luò)導(dǎo)入的類文件都要經(jīng)過字節(jié)碼校驗(yàn)器的驗(yàn)證,以提高安全。校驗(yàn)過程:字節(jié)碼校器對程序?qū)⑦M(jìn)行四次校驗(yàn),以確保代碼符合JVM規(guī)范并且不違反系統(tǒng)的完整性。如果校驗(yàn)器在完成四次校驗(yàn)后未返回錯誤消息,則說明:
1、類符合JVM規(guī)范指定的類文件格式
2、沒有訪問權(quán)限違例
3、代碼未引起操作數(shù)堆棧上溢或下溢
4、所有操作代碼的參數(shù)類型是正確的
5、無非法數(shù)據(jù)轉(zhuǎn)換發(fā)生,如將整數(shù)轉(zhuǎn)換為對象引用然后,JVM開始解釋執(zhí)行代碼?;贘2SE7.0進(jìn)行GUI編程----第一章Java入門1.3Java的工作方式
1、文件類型.java Java源代碼文件.class 二進(jìn)制字節(jié)碼文件
2、運(yùn)行機(jī)制對于大多數(shù)語言,要運(yùn)行程序,要么編譯程序要么解釋程序;而Java語言的程序則既要被編譯又要被解釋。3、其工作方式為:
1)、編譯程序?qū)ava源程序編譯為字節(jié)碼(bytecode)程序;
2)、解釋程序(Java虛擬機(jī)中的解釋程序)分析并運(yùn)行字節(jié)碼程序。
基于J2SE7.0進(jìn)行GUI編程----第一章Java入門1.4Java開發(fā)工具:1、記事本+JDK:適合初學(xué)者,并能了解Java程序執(zhí)行邏輯
2、JCreator:適合初學(xué)者,一個簡單免費(fèi)的IDE(集成開發(fā)環(huán)境)
3、JBuilder:Bland公司非常強(qiáng)大的IDE(商業(yè)的集成開發(fā)環(huán)境),已走下坡路
4、NetBeans:Sun公司開源免費(fèi)IDE,速度比較慢,適合做桌面開發(fā)
5、Eclipse:IBM資助的開源免費(fèi)IDE,是目前企業(yè)主流開發(fā)平臺,最新版3.5及JavaEEforEclipse。
1.5、JDK的下載與安裝:為了鼓勵使用Java語言開發(fā)軟件,SunMicrosystems公司提供了免費(fèi)開源的軟件開發(fā)工具包(SDK),其中包括編譯器、虛擬機(jī)、調(diào)試器等開發(fā)工具,稱為Java開發(fā)工具包或JDK。JDK(可從下載最新版本)jdk6.0
基于J2SE7.0進(jìn)行GUI編程----第一章Java入門1.6安裝JDK后產(chǎn)生如下目錄結(jié)構(gòu):\bin目錄:Java開發(fā)工具,包括Java編譯器、解釋器等\demo目錄:一些實(shí)例程序\lib目錄:Java開發(fā)類庫\jre目錄:Java運(yùn)行環(huán)境,包括Java虛擬機(jī)、運(yùn)行時(shí)類庫等1.7JDK實(shí)用程序:1、javacJava編譯器,將Java源程序編譯成字節(jié)碼2、javaJava解釋器,直接從類文件執(zhí)行Java應(yīng)用程序,即application3、appletviewer小程序?yàn)g覽器,執(zhí)行html文件上的Java小程序,即Applet1.8設(shè)置環(huán)境變量:
1、JAVA_HOME:JAVA_HOME環(huán)境變量主要設(shè)置JDK的安裝目錄這個環(huán)境變量主要為其它java環(huán)境變量服務(wù),使用:%JAVA_HOME%2、PATH:…;%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin;
使得在Windows命令窗口下能直接使用bin中的實(shí)用程序。在Windows操作系統(tǒng)"運(yùn)行"中輸入cmd進(jìn)入命令窗口,在提示符下輸入:
c:\>java-version如果能夠看到j(luò)ava版本提示信息,表示環(huán)境變量配置成功?;贘2SE7.0進(jìn)行GUI編程----第一章Java入門
3、CLASSPATH:為java加載類(classorlib)路徑,只有類在CLASSPATH中,java命令才能識別。設(shè)為:.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar1.9一個簡單的Java應(yīng)用程序HelloWorld一、程序示例:保存到c:\java\TestGreeting.java,代碼如下:publicclassTestGreeting{publicstaticvoidmain(String[]args){Greetinghello=newGreeting();hello.greet();}}保存到c:\java\Greeting.java,代碼如下:publicclassGreeting{publicvoidgreet(){System.out.println("Java,你好");}}基于J2SE7.0進(jìn)行GUI編程----第一章Java入門二、TestGreeting應(yīng)用程序:publicclassTestGreeting{publicstaticvoidmain(String[]args){Greetinghello=newGreeting();hello.greet();}}三、Greeting類publicclassGreeting{publicvoidgreet(){System.out.println("Java,你好");}}四、編譯和運(yùn)行TestGreeting應(yīng)用程序確保操作系統(tǒng)的Path環(huán)境變量增加了JDK安裝文件夾下的bin文件夾路徑。c:\java>javacTestGreeting.javac:\java>javaTestGreeting基于J2SE7.0進(jìn)行GUI編程----第一章Java入門五、診斷編譯錯誤
1、編譯時(shí)錯誤
1)、javac:Commandnotfound環(huán)境變量Path沒有配置好,請?jiān)赑ath中增加jdk安裝文件夾下的bin文件夾的路徑
2)、語法錯誤:
如:System.out.printl("Java,你好");3)、類和文件命名錯誤:如果一個.java文件中包含一個public類,則該文件的主文件名必須與這個類名完全相同,包括大小寫。示例:
4)、類的個數(shù)每一個.java文件中只能聲明一個頂級非靜態(tài)的public類,且這個類的名稱必須與.java文件主文件名完全相同。如果在一個源文件.java中聲明了多個public類,將發(fā)生錯誤。每個.java文件中允許非public的類多個。2、運(yùn)行時(shí)錯誤
1)、Can’tfindclassTestGreeting
java是嚴(yán)格區(qū)分大小寫的,這個運(yùn)行時(shí)錯誤說明TestGreeting類沒有找到
2)、Exceptioninthread"main"java.lang.NoSuchMethodError:main這表示,解釋器要執(zhí)行的類沒有一個靜態(tài)的main方法,可能只有一個非靜態(tài)的main方法,你需要為這個main方法加上static關(guān)鍵字?;蛘呤莔ain方法的參數(shù)格式錯誤。基于J2SE7.0進(jìn)行GUI編程----第一章Java入門六、在上面HelloWorld示例中,下圖演示了如何進(jìn)行編譯及運(yùn)行TestGreeting.javaGreeting.javaTestGreeting.classGreeting.classjavac也編譯JVMjava也加載UNIXJVMDOSJVMJavaOS可運(yùn)行于多個平臺編譯運(yùn)行時(shí)基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊瘫菊轮饕榻B了Java的類的層次結(jié)構(gòu)、java中類的實(shí)現(xiàn)、類中成員、屬性、方法、構(gòu)造器、包、使用JavaAPI在線文檔等相關(guān)知識,以及面向?qū)ο缶幊探?、軟件工程等概念?.1軟件工程2.1.1軟件工程發(fā)展歷史軟件工程是一門異常困難且難以駕馭的學(xué)科。軟件工程的目的旨在通過讓代碼復(fù)用來使軟件系統(tǒng)的開發(fā)、維護(hù)與擴(kuò)展更容易。軟件工程自從軟件誕生以來一直在發(fā)展,歷史如下:一、機(jī)器代碼(二十世紀(jì)四十年代末--現(xiàn)在)
二、高級語言(二十世紀(jì)五十年代--現(xiàn)在)操作系統(tǒng)(二十世紀(jì)六十年代--現(xiàn)在)
FortranLISPCCOBOLOS/360UNIXMacOSWindows
三、庫/函數(shù)API(二十世紀(jì)六十年代--二十世紀(jì)八十年代初)
NASTRANTCP/IPISAMX-WindowsOpenLook
四、面向?qū)ο蟮恼Z言(二十世紀(jì)八十年代--現(xiàn)在)
SELFSmalltalkCommonLispObjectSystemEiffelC++Java
五、工具包/框架/對象API(二十世紀(jì)九十年代--現(xiàn)在)
Java2SDKAWT/J.F.C./SwingJiniJavaBeansJDBC從最早期的機(jī)器代碼,到后面的高級語言,到面向?qū)ο蟮木幊陶Z言及框架的誕生,目的都是使對軟件的開發(fā)更容易,對代碼的組織與維護(hù)、代碼的復(fù)用更方便。Java從1995年誕生后,發(fā)展至今有許多軟件技術(shù)和框架,并且現(xiàn)在還在不斷增加?;贘2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.1.2分析和設(shè)計(jì)階段軟件開發(fā)項(xiàng)目分為五個主要工作流程:需求捕獲、分析、設(shè)計(jì)、實(shí)現(xiàn)和測試。每一個階段都非常重要,但往往分析與設(shè)計(jì)階段對后續(xù)的實(shí)現(xiàn)與測試影響很大,因?yàn)樵诜治龊驮O(shè)計(jì)階段確定了軟件開發(fā)的方向。在分析階段需要定義系統(tǒng)的功能任務(wù),分析階段必須明確要操作的目標(biāo)系統(tǒng)所涉及的對象以及對象間的行為和關(guān)系。設(shè)計(jì)階段需要定義系統(tǒng)并如何實(shí)現(xiàn)目標(biāo)及功能任務(wù),在該階段需要創(chuàng)建目標(biāo)系統(tǒng)中的角色、活動、對象和行為模型,這可以使用統(tǒng)一建模語言(UML)來實(shí)現(xiàn)建模。
UML是一種大型且復(fù)雜的建模語言,主要用于設(shè)計(jì)階段,通過相應(yīng)的UML建模軟件例如IBM的Rose建模軟件,可以方便實(shí)現(xiàn)軟件建模,并支持生成代碼。2.1.3分析和設(shè)計(jì)舉例:略2.1.4抽象軟件設(shè)計(jì)一直在從低級的構(gòu)造向更高級發(fā)展??梢院喕统橄髞韺?shí)現(xiàn)這個發(fā)展。簡化就是在早期語言設(shè)計(jì)都構(gòu)建高級語言或技術(shù)時(shí),不使用原始的復(fù)雜的東西,而采用簡單的技術(shù)。抽象是指強(qiáng)制在公有接口后面隱藏私有實(shí)現(xiàn)的細(xì)節(jié)。抽象的要領(lǐng)導(dǎo)致了高級語言中子程序(函數(shù))的出現(xiàn),以及對象中函數(shù)與數(shù)據(jù)的配對。在更高級別上,抽象導(dǎo)致了框架和API的誕生與發(fā)展?;贘2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.1.5作為對象藍(lán)圖的類類是一種軟件藍(lán)圖,可以實(shí)例化到得對象,從而被使用。類與對象中允許包括屬性及方法,這稱之為類與對象中成員。類具有三大特性:封裝、繼承和多態(tài)特性。2.2聲明Java技術(shù)類:格式:
[訪問修飾符]class類名{//屬性定義部分
//構(gòu)成器定義部分
//方法定義部分}
注:類名遵循變量的名稱規(guī)則,訪問修飾符只能使用public或<缺省>,public說明類可以被任意訪問。示例:
publicclassVehicle{privatedoublemaxLoad;publicvoidsetMaxLoad(doublevalue){maxLoad=value;}}基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.3聲明屬性:在類中聲明格式:
[訪問修飾符]數(shù)據(jù)類型屬性名稱[=表達(dá)式|值];示例:
publicclassVehicle{ privateintx; privatefloaty=10000.0F; privateStringname="BatesMotel";}
注:private聲明為私有的屬性,只能供類本身使用。基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.4聲明方法:在類中聲明格式:
[訪問修飾符]返回值數(shù)據(jù)類型方法名稱(類型1參數(shù)變量1,…,類型n參數(shù)變量n){//方法體
//允許使用return中止函數(shù)執(zhí)行,并返回值,格式:return;或return表達(dá)式;}
說明:返回值類型可以為void,表示返回?zé)o值。示例:
publicclassDog{ privateintweight; publicintgetWeight(){returnweight;} publicvoidsetWeight(intnewWeight){ if(newWeight>0){ weight=newWeight; }}}基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.5訪問對象成員:格式:類名對象名=new類名();
對象名.成員;
對象名.成員函數(shù)();
示例:將使用前面的Dog類publicclassTestDog{publicstaticvoidmain(String[]args){ Dogd=newDog(); System.out.println("狗的體重為:"+d.getWeight());d.setWeight(42); System.out.println("狗的體重為:"+d.getWeight());d.setWeight(-42); System.out.println("狗的體重為:"+d.getWeight());}}基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.6信息隱藏:技術(shù):使用private、public等訪問修飾符。例如:有一個MyDate類,包括屬性:day、month和year。在UML(統(tǒng)一建模語言)中,類圖如右。實(shí)現(xiàn)如下:
publicclassMyDate{ publicintday; publicintmonth; publicintyear;}
然后如果客戶端代碼如下,會導(dǎo)致出現(xiàn)錯誤:
MyDated=newMyDate();d.day=32;//非法的日子d.month=2;d.day=30;//2月沒有30天d.day=d.day+1;//2月更沒有31天
因此,對于上述代碼的問題,最好是讓客戶端代碼不能直接訪問三個屬性。而采用setXyz()(在java中通常稱之為setter設(shè)置器)來設(shè)置三個屬性的值,并做驗(yàn)證;采用getXyz()(在java中通常稱之為getter獲取器)來得到三個屬性的值。將三個屬性設(shè)置為私有private。類圖如右:d.setDay(32);//非法的日子,檢查后返回falsed.setMonth(2);d.setDay(30);//2月沒有30天返回falsed.setDay(d.getDay()+1);//2月更沒有31天返回false+day:int+month:int+year:intMyDate-day:int-month:int-year:intMyDate+getDay()+getMonth()+getYear()+setDay(int):boolean+setMonth(int):boolean+setYear(int):boolean基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.7封裝:對于客戶端程序隱藏該隱藏的,開放該開發(fā)的就是封裝。這些要使用public、private這樣的訪問修飾符來實(shí)現(xiàn)。使用封裝特性,可以使對類的更改讓客戶端程序沒有私毫察覺。例如:對于上面的MyDate類的開發(fā)人員決定使用一個相對于某一天(紀(jì)元日)的過去的天數(shù)做為MyDate的日期存儲基礎(chǔ),以實(shí)現(xiàn)日期的比較和日期間隔的輕松計(jì)算。而不再采用原來的年、月、日做為存儲基礎(chǔ)。則開發(fā)人員可以輕松更改,而客戶端程序不需要任何變動。類圖如右:-date:longMyDate+getDay():int+getMonth():int+getYear():int+setDay(int):boolean+setMonth(int):boolean+setYear(int):boolean-isDayValid(int):boolean基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.8聲明構(gòu)造器:構(gòu)造器即構(gòu)造函數(shù)。格式:
[訪問修飾符]類名(參數(shù)變量列表){//函數(shù)體;}
說明:訪問修飾符只能為public、protected或private。構(gòu)造器不是方法,它們沒有返回值也不能被繼承。示例:publicclassDog{ privateintweight;publicDog(){ weight=42;} publicintgetWeight(){returnweight;} publicvoidsetWeight(intnewWeight){ if(newWeight>0){ weight=newWeight; }}}基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.9缺省構(gòu)造器:
java中每個類必須至少一個構(gòu)造器,如果不為類編寫任何構(gòu)造器,Java將為該類自動創(chuàng)建一個缺省的構(gòu)造器,這個缺省構(gòu)造器沒有任何參數(shù),且沒有任何語句。當(dāng)擁有缺省構(gòu)造器之后,對于類被實(shí)例化為對象可以直接如下格式任何:類名對象名=new類名();
注意:當(dāng)手工為一個類編寫任何一個構(gòu)造函數(shù)時(shí),該類都將丟失Java為其創(chuàng)建的缺省構(gòu)成函數(shù)。示例:classGreeting{publicGreeting(Strings){System.out.println("Java,你好1"+s);}publicvoidgreet(){System.out.println("Java,你好");}}publicclassTestGreeting{publicstaticvoidmain(String[]args){Greetinghello=newGreeting();hello.greet();}}基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.10源文件布局:任何Java源程序文件均按照下列部份依次組織每一個Java源代碼文件。
[package名稱;]//包聲明部份
<import包路徑名;>*//包導(dǎo)入部份,也可使用多行同時(shí)導(dǎo)入多個包
<類聲明部份>+
說明:[]括起來的表示可出現(xiàn)可不出現(xiàn),<>括起來的表示必須出現(xiàn),*指示前面的部份出現(xiàn)>=0次(即可不出現(xiàn)),+指示前面的部份出現(xiàn)>=1次(即必須出現(xiàn))
必須嚴(yán)格按照這種代碼布局來編寫Java源程序。先聲明包,指定本文件中的所有類定義均位于該包空間中,以便于其它地方使用包空間加.對該文件中的類進(jìn)行訪問,如果不聲明包,則該文件中所有類將被Java放入默認(rèn)包空間空間中,不便于訪問;緊接著,導(dǎo)入本文件下面將要使用的包空間或包空間中的具體類,可以使用多行導(dǎo)入多個包空間或類,需要使用包空間或類的完全限定名稱,也可以使用包空間路徑.*,一次性導(dǎo)入該包空間中的所有類,當(dāng)導(dǎo)入包空間或類后,對于該包空間下的類或直接導(dǎo)入的類,可以在下面代碼中直接使用類名,而不再需要完全限定名對類進(jìn)行訪問,如果不使用import,則Java將僅僅導(dǎo)入java.lang這個包中的所有類。再下面是類聲明部份,在一個Java源文件中雖然允許同時(shí)聲明多個類,但建議還是一個類使用一個Java源文件來定義,并且Java源文件的名稱與類名完全相同。如果一個Java源文件中有多個類定義,則最多只能有一個public類,且該類的類名必須與該Java源文件名一致。基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊淌纠篤ehicleCapacityReport.javapackageshipping.reports;importshipping.reports.*;importjava.util.List;importjava.io.*;publicclassVehicleCapacityReport{privateListvehicles;publicvoidgenerateReport(Writeroutput){//方法主體
}}基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.11軟件包:大多數(shù)軟件系統(tǒng)都很龐大,為了管理這些軟件系統(tǒng)的源代碼。常常需要將系統(tǒng)中的類分組到不同的包中來簡化類的管理,并防止類命名沖突。在Java中使用包可以包含類以及其它包從而構(gòu)成包的層次結(jié)構(gòu),并對包方便進(jìn)行引用。在UML建模語言中也使用了包的概念。如下圖,UML中的shipping包:shippingGUIreportsdomainCompanyVehicleTruckRiverBarge在上面的shipping包中實(shí)現(xiàn)了航運(yùn)軟件系統(tǒng)的部分功能。在shipping頂層包中包括了兩個子包GUI和reports,而這兩個子包要依賴domain包,在domain包中包括了Company、Vehicle(交通工具)、Truck(卡車)、RiverBarge(駁船)等模型元素即類。擁有0..*基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.12package語句:格式:package頂層包空間名[.子包空間名.子包空間名];
包空間聲明部份必須位于,Java源代碼文件的第一行。每個Java源代碼最多只能進(jìn)行一次包空間聲明,如果沒有聲明包空間則該Java源代碼中的所有類型位于當(dāng)前應(yīng)用程序的默認(rèn)包空間(無名包空間)中。Java應(yīng)用程序中的包對應(yīng)源程序中的一個文件夾,且包空間的名稱與該文件夾名稱完全相同。Java應(yīng)用程序之所以引入包,主要是為了解決對Java源程序中的類型按包進(jìn)行分類管理的問題,并且也防止了類名發(fā)生沖突的問題。這樣后,不同包之間的類型允許重名,而不會出現(xiàn)任何問題。在創(chuàng)建Java類之前,我們應(yīng)該創(chuàng)建相應(yīng)的包,然后將該類放入該包空間中(即將Java類文件放入該包空間對于的文件夾中),包空間中只能包含Java的類型定義、接口定義等,不能直接出現(xiàn)執(zhí)行代碼。包空間的結(jié)構(gòu)為一個層次結(jié)構(gòu),即允許在頂層包空間下創(chuàng)建各種下級,甚至下下級的包空間,并以此對類型進(jìn)行分層管理,在聲明包空間時(shí),允許使用.做間隔直接聲明頂層包空間的子包空間。示例:
packageshipping.domain;publicclassVehicle{//..類定義}
包空間聲明前可以出現(xiàn)空白或注釋,但包空間名稱應(yīng)全部小寫,類名則應(yīng)遵循第一個字母大小,其它單詞首字母大寫的駝峰規(guī)則?;贘2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.13import語句:格式1:import包名[.子包名].類名;格式2:import包名[.子包名].*;
格式1用于導(dǎo)入指定包空間中的指定類,該包空間中其它類不導(dǎo)入,這將導(dǎo)致Java編譯器更快速找到該類并進(jìn)行編譯。格式2用于導(dǎo)入指定包空間中的所有類,這將導(dǎo)致編譯器根據(jù)你Java源代碼中類的使用情況,由編譯器自動決定導(dǎo)入哪些類,將會花費(fèi)比較多的時(shí)間從上到下依查找需要用到類相應(yīng)的包,并檢查是否有沖突,但不影響運(yùn)行速度,只會降低編譯速度。
import語句必須出現(xiàn)在所有類的聲明代碼之前。當(dāng)導(dǎo)入相應(yīng)的類或包中所有類后,在下方的代碼中可以直接通過使用類名訪問導(dǎo)入的類,而非類的完全限定名。示例:
packageshipping.reports;importshipping.domain.*;importjava.util.List;importjava.io.*;publicclassVehicleCapacityReport{privateCompanycompanyForReport;//…}
基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.14目錄布局和包:一個包在Java中必須對應(yīng)一個目錄(文件夾)(除開無名包)。所以,Java中的包層次管理可以理解為文件夾的層次管理,在相應(yīng)包中聲明類,可以理解為在相應(yīng)文件夾中創(chuàng)建該類的Java源代碼文件。不同的Java源文件中的類可以隸屬于同一個包,并且需要放在相同的包文件夾中。對于前面的shipping軟件包中的示例目錄結(jié)構(gòu)為:
shipping/|--------------domain/||--------Company.class||--------Vehicle.class||--------RiverBarge.class||--------Truck.class|--------------GUI/|--------------reports/|--------VehicleCapacityReport.class基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.15開發(fā):如果要同時(shí)進(jìn)行幾個項(xiàng)目開發(fā),可以采用多種開發(fā)方式與手段。例如:對于前面的shipping軟件包中的示例目錄結(jié)構(gòu)為:
JavaProjects/|------ShippingPrj/|-----src||------shipping/|||---------domain/|||---------GUI/|||---------reports/|-----docs/|-----classes/ |------shipping/ |---------domain/ |---------GUI/|---------reports/|------其它項(xiàng)目/這種對項(xiàng)目開發(fā)進(jìn)行管理的技術(shù)好處在于,可以在src文件夾中管理.java源代碼,而編譯生成的.class文件將位于classes文件夾中,在docs文件夾中可以保存項(xiàng)目的文檔資料?;贘2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊?.16使用–d編譯選項(xiàng)指定類文件(.class文件)的存放路徑:格式:javac-d目錄路徑編譯文件.java對于上面開發(fā)技術(shù)示例中,在命令窗口執(zhí)行:
cdJavaProjects/ShippingPrj/srcjavac-d../classesshipping/domain/*.java2.17部署在客戶計(jì)算機(jī)上部署并運(yùn)行一個Java程序可以不用操作客戶計(jì)算機(jī)上的CLASSPATH環(huán)境變量,也很少這樣做。采用下方法即可:即通過創(chuàng)建可執(zhí)行的Java存檔(JAR)文件來實(shí)現(xiàn)部署并運(yùn)行。操作步驟:
1、創(chuàng)建一個臨時(shí)文件MANIFEST.MF(清單文件):該文件的內(nèi)容為:主要是指定主類,即啟動類,必須在其后有兩空行
Main-Class:mypackage.MyClass
2、使用如下命令:
jarcmfMANIFEST.MF
MyProgram.jar*.class|文件夾/
說明:如果沒有包空間,則使用*.class將類文件打包到.jar中,如果有頂層包空間,則必須先到達(dá)頂層包空間文件夾的上層文件夾,在命令后指定頂層包空間文件夾名稱并加一個/,jar將遞歸把當(dāng)前文件夾下頂層包空間文件夾中所有的.class文件打包到.jar中。3、復(fù)制MyProgram.jar到目標(biāo)計(jì)算機(jī),并運(yùn)行,如果是在Windows操作系統(tǒng),雙擊jar文件就可以執(zhí)行:
java–jar.jar文件的路徑基于J2SE7.0進(jìn)行GUI編程----第二章面向?qū)ο缶幊滩渴饚欤涸贘ava中,特殊情況下,jar文件中可能包括許多類需要我們在不同項(xiàng)目程序中使用,這樣的.jar庫文件,可以直接通過復(fù)制的方式復(fù)制到JDK安裝文件夾下的jre目錄下的lib目錄的ext子目錄中,但這樣做將導(dǎo)致任何程序都可以執(zhí)行.jar庫中的類,擁有完全執(zhí)行權(quán)限。并且,如果jar庫中的類與JDK類庫中的類發(fā)生命名沖突將導(dǎo)致運(yùn)行時(shí)錯誤。如果只安裝了標(biāo)準(zhǔn)JRE,則應(yīng)當(dāng)復(fù)制到標(biāo)準(zhǔn)JRE目錄下的lib下的ext子目錄中。
示例:創(chuàng)建一個Test.jar軟件包,包名test,類TestClass,有一公共方法,不需要設(shè)置MANIFEST.MF(清單文件)的主類。然后復(fù)制到j(luò)dk/jre/lib/ext下(擴(kuò)展庫文件夾下)。在自己的任意的類中調(diào)用該jar包中的TestClass類。技術(shù)摘要:
1、類--對象模型
2、對象--類的實(shí)例
3、屬性--對象的數(shù)據(jù)元素
4、方法--對象的功能元素,函數(shù)或過程。
5、構(gòu)造器--用于初始化創(chuàng)建對象時(shí)被自動調(diào)用,構(gòu)造函數(shù)。
6、包--類、子包及兩者的集合,用于管理軟件系統(tǒng)。使用Java技術(shù)API文檔:
基于J2SE7.0進(jìn)行GUI編程----第三章標(biāo)識符、關(guān)鍵字和數(shù)據(jù)類型本章主要介紹了Java語法基礎(chǔ),包括Java變量、關(guān)鍵字、基本類型和類類型等相關(guān)知識。3.1注釋在Java代碼中,允許使用三種格式的注釋:
1、單行注釋:
//2、段落注釋:
/**/3、文檔注釋:文檔注釋可以使用javadoc命令生成HTML幫助文檔。
javadoc-d輸出目錄包|.java
/***文檔注釋*/基于J2SE7.0進(jìn)行GUI編程----第三章標(biāo)識符、關(guān)鍵字和數(shù)據(jù)類型3.2分號、塊和空白
1、分號:
Java中所有語句必須以;結(jié)束,單獨(dú)的一個分號為空語句。
2、語句塊:語句塊必須以{開始及}結(jié)束。
{//語句塊中的語句}
語句塊可以嵌套。3、空白:在語句的元素之間可以有空白。并允許任意數(shù)量的空白,包括空格、制表符和換行符,以提高源代碼的清晰度和直觀效果。
基于J2SE7.0進(jìn)行GUI編程----第三章標(biāo)識符、關(guān)鍵字和數(shù)據(jù)類型3.3標(biāo)識符
Java中的標(biāo)識符是為變量、類或方法起的一個名稱。標(biāo)識符以字母、下劃線_或美元符號$開頭,其后可以是字母、數(shù)字和下劃線的組合,沒有長度限制。標(biāo)識符不能使用Java的關(guān)鍵字。
Java源代碼中的字符是16位即雙字節(jié)Unicode字符。雖然Java支持使用Unicode字符做為標(biāo)識符,但建議變量名、類名、方法名等標(biāo)識符只使用ASCII字符(英文字符)。3.4Java編程語言關(guān)鍵字關(guān)鍵字對Java編譯器有特殊意義,它們標(biāo)識數(shù)據(jù)類型名稱或程序結(jié)構(gòu)名稱。
Java編程語言關(guān)鍵字:abstract continue for new switchassert default goto package synchronizedboolean do if private thisbreak double implements protected throwbyte else import public throwscase enum instanceof return transientcatch extends int short trychar final interface static voidclass finally long strictfp volatileconst float native super while基于J2SE7.0進(jìn)行GUI編程----第三章標(biāo)識符、關(guān)鍵字和數(shù)據(jù)類型
對Java關(guān)鍵字的說明:
1、true、false和null都是小寫,它們不是Java的關(guān)鍵字,也是Java字符(常量)2、沒有sizeof運(yùn)算符,Java中不能直接訪問內(nèi)存,因此sizeof沒有用。
3、Java編程語言不使用關(guān)鍵字goto和const。3.5基本Java編程語言數(shù)據(jù)類型
Java編程語言有許多內(nèi)置的數(shù)據(jù)類型,這數(shù)據(jù)類型分為兩類:類數(shù)據(jù)類型和基本數(shù)據(jù)類型?;緮?shù)據(jù)類型即簡單的值,而非對象。類數(shù)據(jù)類型用于更為復(fù)雜的數(shù)據(jù)類型,包含您自己聲明的所有類型。類數(shù)據(jù)類型習(xí)慣上用來創(chuàng)建對象。3.5.1基本數(shù)據(jù)類型
1、邏輯類型:booleanboolean類型的常量值為:true和falsebooleantruth=true;Java中boolean類型只能保存true或false,而不能使用數(shù)字表示boolean類型的值2、字符類型:charJava中單個字符使用char類型表示,char表示雙字節(jié)Unicode字符,必須位于’’之內(nèi)。
‘a(chǎn)’字母a‘\t’制表符
‘\u????’表示特定的Unicode字符,例如,’\u03A6’表示一個特殊字符基于J2SE7.0進(jìn)行GUI編程----第三章標(biāo)識符、關(guān)鍵字和數(shù)據(jù)類型\\\字符本身\’‘字符本身
\""字符本身\n換行符
charch=‘A’;charch1,ch2;3、字符類型:String
可以使用String類型(它不是基本類型,而是一個特殊的類類型)來表示字符串。String仍然是一個Unicode字符串,在String類型中仍然允許使用轉(zhuǎn)義字符。Java中的String不以\0(空字符)結(jié)束。String是非常特殊的對象數(shù)據(jù)類型,保存其中的值不能被更改。
String類型必須以""引起來。
Stringgreeting="GoodMorning!!\n";
StringerrorMessage="RecordNotFound!";Stringstr1,str2;
空字符串:""或者使用null基于J2SE7.0進(jìn)行GUI編程----第三章標(biāo)識符、關(guān)鍵字和數(shù)據(jù)類型4、整數(shù)類型:byte、short、int和longJava編程語言的四種整數(shù)類型。可以使用十進(jìn)制、八進(jìn)制或十六進(jìn)制形式來表示整數(shù)類型的數(shù)據(jù)。格式:
225 十進(jìn)制
077 八進(jìn)制
0xBAAC0X23f十六進(jìn)制
Java中數(shù)字類型都是帶有符號,即可以表示正數(shù)也可以表示負(fù)數(shù)。Java中l(wèi)ong類型的常量必須后綴l或L表示,建議使用L。
2L077L0xBAACL1)、byte:字節(jié)類型(1byte)-128到127-2^7到2^
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024簡單家具維修合同范本
- 2024年加工承攬合同標(biāo)的與質(zhì)量標(biāo)準(zhǔn)
- 2024建筑材料采購合同范本下載
- 2024年度公園綠化樹苗采購合同
- 2024年山東濰坊物業(yè)委托管理合同
- 迷霧解說課件教學(xué)課件
- 2024年度互聯(lián)網(wǎng)金融產(chǎn)品研發(fā)與推廣合同
- 04版智能家居系統(tǒng)研發(fā)與銷售合同
- 2024年度云服務(wù)提供商合同
- 2024年店鋪投資合作協(xié)議
- 護(hù)理質(zhì)量安全與風(fēng)險(xiǎn)管理的案例分析
- 工程流體力學(xué)課后習(xí)題答案-(杜廣生)
- AI智能客服應(yīng)用實(shí)踐
- 《止吐藥臨床應(yīng)用》課件
- 幕墻工程檢驗(yàn)批質(zhì)量驗(yàn)收記錄
- 危險(xiǎn)化學(xué)品經(jīng)營企業(yè)安全生產(chǎn)獎懲制度范本
- 報(bào)價(jià)單模板完
- 30題藥品質(zhì)量檢測崗位常見面試問題含HR問題考察點(diǎn)及參考回答
- 《嬰幼兒行為觀察、記錄與評價(jià)》期末試卷及答案 卷3
- 企業(yè)戰(zhàn)略管理概述
- 消防安全概述
評論
0/150
提交評論