




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Java入門教程9天快速入門JAVA第一章Java概述1.1Java語言出現(xiàn)的背景、影響及應用前景一、背景最近一年多來,在Internet上出現(xiàn)的特別吸引人的事件就是Java語言和用 Java編寫的瀏覽器HotJava。1991年,SUN MicroSystem公司的JameGosling、BillJoe等人,為在電 視、控制烤面包箱等家用消費類電子產(chǎn)品上進行交互式操作而開發(fā)了一個名為Oak 的軟件(即一種橡樹的名字),但當時并沒有引起人們的注意,直到1994年下半 年,Internet的迅猛發(fā)展,環(huán)球信息網(wǎng)WWW的快速增長,促進了Java語言研制的 進展,使得它逐漸成為Internet上受歡
2、迎的開發(fā)與編程語言,一些著名的計算機 公司紛紛購買了Java語言的使用權,如MicroSoft、IBM、Netscape、Novell、 Apple、DEC、SGI等,因此,Java語言被美國的著名雜志PCMagazine評為1995 年十大優(yōu)秀科技產(chǎn)品,(計算機類就此一項入選),隨之大量出現(xiàn)了用Java編寫的 軟件產(chǎn)品,受到工業(yè)界的重視與好評,認為Java是八十年代以來計算機界的一件 大事,微軟總裁比爾蓋茨在悄悄地觀察了一段時間后,不無感慨地說:Java是 長時間以來最卓越的程序設計語言,并確定微軟整個軟件開發(fā)的戰(zhàn)略從PC單機時 代向著以網(wǎng)絡為中心的計算時代轉移,而購買Java則是他的重大戰(zhàn)
3、略決策的實施部 署。因此,Java的誕生必將對整個計算機產(chǎn)業(yè)發(fā)生深遠的影響,對傳統(tǒng)的計算模型 提出了新的挑戰(zhàn)。SUNMicroSystem公司的總裁ScottMcNealy認為Java為Internet和WWW開 辟了一個嶄新的時代。環(huán)球信息網(wǎng)WWW的創(chuàng)始人Berners-Lee說:計算機事業(yè)發(fā)展的下一個浪潮就 是Java,并且將很快會發(fā)生的??磥?使用Java已成大勢所趨!MicroSoft和IBM兩大公司都計劃在Internet上銷售用Java編寫的軟件。 Apple、HP、IBM、MicroSoft、Novell、SGI、SCO、Tandem等公司均 計劃將Java并入各自開發(fā)的操作系統(tǒng)
4、,而負責開發(fā)并推廣Java技術的SunSoft公 司(這是SUN下屬的一個子公司),將通過頒發(fā)許可證的辦法來允許各家公司把 Java虛擬機和Java的Applets類庫嵌入他們開發(fā)的操作系統(tǒng),這樣各類開發(fā)人員 就能更容易地選擇多種平臺來使用Java語言編程,不同的用戶也就可以脫離Web 瀏覽器來運行Java應用程序,這無疑是很受廣大用戶歡迎的,也為Java語言的應 用開拓了極為廣闊的前景。(當然,各類JavaOS之間的兼容性必須得到重視,好在 JavaSoft已保證將監(jiān)督這種兼容性)。另外,由JavaSoft推出的完全用Java編寫的Internet上新型瀏覽器HotJava, 比去年alph
5、a版更為實用,不僅能編制動態(tài)的應用軟件,而且能編制完整的成套桌 面應用軟件,將來還會提供更多的能幫助編制動態(tài)應用軟件的模塊,顯然,這也是 為Java的應用提供了有力的例證。今年6月7日,由SUN公司和臺灣經(jīng)濟事務部信息發(fā)展局、臺灣信息技術研 究所等單位牽頭,成立了一個Java聯(lián)盟,參加的有22個在臺灣相當著名的計算 機公司,并在臺北建立一個Java開發(fā)中心,在新竹建立一個Java語言實驗室, 以掀起臺灣開發(fā)與應用Java語言的熱潮。香港則在今年4月就舉行了全島的Java杯比賽,在計算機界掀起了學習 Java的熱潮(尤其是在大學生們中,出現(xiàn)了一批Java迷)。有人預言:Java將是網(wǎng)絡上的世界語
6、,今后所有的用其他語言編寫的軟 件統(tǒng)統(tǒng)都要用Java語言來改寫。二、Java語言對軟件開發(fā)技術的影響工業(yè)界不少人預言:Java語言的出現(xiàn),將會引起一場軟件革命,這是因為 傳統(tǒng)的軟件往往都是與具體的實現(xiàn)環(huán)境有關,換了一個環(huán)境就需要作一番改動,耗 時費力,而Java語言能在執(zhí)行碼(二進制碼)上兼容,這樣以前所開發(fā)的軟件就 能運行在不同的機器上,只要所用的機器能提供Java語言解釋器即可。Java語言將對未來軟件的開發(fā)產(chǎn)生影響,可從如下幾個方面考慮:1軟件的需求分析:可將用戶的需求進行動態(tài)的、可視化描述,以提供設計 者更加直觀的要求。而用戶的需求是各色各樣的,不受地區(qū)、行業(yè)、部門、愛好的 影響,都可
7、以用Java語言描述清楚。2軟件的開發(fā)方法:由于Java語言的面向目標的特性,所以完全可以用O-O 的技術與方法來開發(fā),這是符合最新的軟件開發(fā)規(guī)范要求的。3Java語言的動畫效果遠比GUI技術更加逼真,尤其是利用WWW提供的巨大 動畫資源空間,可以共享全世界的動態(tài)畫面的資源。4軟件最終產(chǎn)品:用Java語言開發(fā)的軟件可以具有可視化、可聽化、可操 作化的效交互、動畫與動作,要它停就停,要它繼續(xù)就繼續(xù),而這是在電影與電 視播放過程中難以做到的。5其它:使用Java語言對開發(fā)效益、開發(fā)價值都有比較明顯的影響。三、工業(yè)界對Java語言的評價1996年5月2931日,在美國舊金山召開了一個全世界Java語
8、言開發(fā)者 大會,(JavaOneDeveloperConfer-ence),出席會議的多達6500多人,來自工業(yè) 界的超過一半,有人評價說:這是近年來計算機界最光輝的一次盛會,一些工 業(yè)界的老總們相當看好Java語言,認為它的使用將會引起一場軟件革命。從軟件 的設計風格、設計方法、設計目標到設計過程,都會產(chǎn)生徹底的變革,甚至會改 變此星球的生活方式。在這次會上,Java的創(chuàng)始人之一JamesGosling說:Java不僅僅只是 applets,它能做任何事情,Dta咨詢公司的高級軟件工程師RichKadel說:Java 不僅僅是一種程序設計語言,更是現(xiàn)代化軟件再實現(xiàn)的基礎;Java還是未來新型
9、 OS的核心;將會出現(xiàn)Java芯片;將構成各種應用軟件的開發(fā)平臺與實現(xiàn)環(huán)境,是 人們必不可少的開發(fā)工具,。由于各界都看好它,因此,各大公司都紛紛表示支持Java,Intel、Xerox 公司聲言將把Java嵌入到他們的產(chǎn)品中去。就連華爾街金融界也在投入資金人力 用Java開發(fā)電子貿(mào)易、金融軟件。所以有人說:現(xiàn)在第三方的開發(fā)商都團結在Java大旗周圍了!,紛紛推出 用Java開發(fā)的各種軟件產(chǎn)品,以期盡快地占領市場。四、Java語言的應用前景Java語言有著廣泛的應用前景,大體上可以從以下幾個方面來考慮其應用:1所有面向對象的應用開發(fā),包括面向對象的事件描述、處理、綜合等;2計算過程的可視化、可操
10、作化的軟件的開發(fā);3動態(tài)畫面的設計,包括圖形圖像的調(diào)用;4交互操作的設計(選擇交互、定向交互、控制流程等);5Internet的系統(tǒng)管理功能模塊的設計,包括Web頁面的動態(tài)設計、管理 和交互操作設計等;6Intranet(企業(yè)內(nèi)部網(wǎng))上的軟件開發(fā)(直接面向企業(yè)內(nèi)部用戶的軟件);7與各類數(shù)據(jù)庫連接查詢的SQL語句實現(xiàn);8其它應用類型的程序。1.2Java的特點Java是一個廣泛使用的網(wǎng)絡編程語言,它是一種新的計算概念。首先,作為一種程序設計語言,它簡單、面向對象、不依賴于機器的結構、 具有可移植性、魯棒性、安全性、并且提供了并發(fā)的機制、具有很高的性能。其 次,它最大限度地利用了網(wǎng)絡,Java的小
11、應用程序(applet)可在網(wǎng)絡上傳輸而 不受CPU和環(huán)境的限制。另外,Java還提供了豐富的類庫,使程序設計者可以很 方便地建立自己的系統(tǒng)。下面我們分別從這三個方面來討論Java的特點,然后通過把Java與C, C+相比進一步指出它所具有的優(yōu)點。一、Java語言Java語言有下面一些特點:簡單、面向對象、分布式、解釋執(zhí)行、魯棒、 安全、體系結構中立、可移植、高性能、多線程以及動態(tài)性。1.簡單性Java語言是一種面向對象的語言,它通過提供最基本的方法來完成指定的 任務,只需理解一些基本的概念,就可以用它編寫出適合于各種情況的應用程 序。Java略去了運算符重載、多重繼承等模糊的概念,并且通過實
12、現(xiàn)自動垃圾 收集大大簡化了程序設計者的內(nèi)存管理工作。另外,Java也適合于在小型機上運 行,它的基本解釋器及類的支持只有40KB左右,加上標準類庫和線程的支持也 只有215KB左右。庫和線程的支持也只有215KB左右。2.面向對象Java語言的設計集中于對象及其接口,它提供了簡單的類機制以及動態(tài)的 接口模型。對象中封裝了它的狀態(tài)變量以及相應的方法,實現(xiàn)了模塊化和信息 隱藏;而類則提供了一類對象的原型,并且通過繼承機制,子類可以使用父類 所提供的方法,實現(xiàn)了代碼的復用。3.分布性Java是面向網(wǎng)絡的語言。通過它提供的類庫可以處理TCP/IP協(xié)議,用戶 可以通過URL地址在網(wǎng)絡上很方便地訪問其它對
13、象。4.魯棒性Java在編譯和運行程序時,都要對可能出現(xiàn)的問題進行檢查,以消除錯誤 的產(chǎn)生。它提供自動垃圾收集來進行內(nèi)存管理,防止程序員在管理內(nèi)存時容易 產(chǎn)生的錯誤。通過集成的面向對象的例外處理機制,在編譯時,Java提示出可能 出現(xiàn)但未被處理的例外,幫助程序員正確地進行選擇以防止系統(tǒng)的崩潰。另外, Java在編譯時還可捕獲類型聲明中的許多常見錯誤,防止動態(tài)運行時不匹配問題 的出現(xiàn)。5.安全性用于網(wǎng)絡、分布環(huán)境下的Java必須要防止病毒的入侵。Java不支持指針, 一切對內(nèi)存的訪問都必須通過對象的實例變量來實現(xiàn),這樣就防止程序員使用 特洛伊木馬等欺騙手段訪問對象的私有成員,同時也避免了指針操作
14、中容易 產(chǎn)生的錯誤。6.體系結構中立Java解釋器生成與體系結構無關的字節(jié)碼指令,只要安裝了Java運行時 系統(tǒng),Java程序就可在任意的處理器上運行。這些字節(jié)碼指令對應于Java虛擬 機中的表示,Java解釋器得到字節(jié)碼后,對它進行轉換,使之能夠在不同的平 臺運行。7.可移植性與平臺無關的特性使Java程序可以方便地被移植到網(wǎng)絡上的不同機器。 同時,Java的類庫中也實現(xiàn)了與不同平臺的接口,使這些類庫可以移植。另外, Java編譯器是由Java語言實現(xiàn)的,Java運行時系統(tǒng)由標準C實現(xiàn),這使得Java 系統(tǒng)本身也具有可移植性。8.解釋執(zhí)行Java解釋器直接對Java字節(jié)碼進行解釋執(zhí)行。字節(jié)碼
15、本身攜帶了許多 編譯時信息,使得連接過程更加簡單。9.高性能和其它解釋執(zhí)行的語言如BASIC、TCL不同,Java字節(jié)碼的設計使之能 很容易地直接轉換成對應于特定CPU的機器碼,從而得到較高的性能。10.多線程多線程機制使應用程序能夠并行執(zhí)行,而且同步機制保證了對共享數(shù)據(jù) 的正確操作。通過使用多線程,程序設計者可以分別用不同的線程完成特定 的行為,而不需要采用全局的事件循環(huán)機制,這樣就很容易地實現(xiàn)網(wǎng)絡上的實 時交互行為。11.動態(tài)性Java的設計使它適合于一個不斷發(fā)展的環(huán)境。在類庫中可以自由地加入 新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且Java通過接口來支持 多重繼承,使之比嚴格的類
16、繼承具有更靈活的方式和擴展性。二、JavaAppletJava語言的特性使它可以最大限度地利用網(wǎng)絡。Ap-plet是Java的小應 用程序,它是動態(tài)、安全、跨平臺的網(wǎng)絡應用程序。JavaApplet嵌入HTML語 言,通過主頁發(fā)布到Internet。網(wǎng)絡用戶訪問服務器的Applet時,這些Applet 從網(wǎng)絡上進行傳輸,然后在支持Java的瀏覽器中運行。由于Java語言的安全機 制,用戶一旦載入Applet,就可以放心地來生成多媒體的用戶界面或完成復雜的 計算而不必擔心病毒的入侵。雖然Applet可以和圖像、聲音、動畫等一樣從網(wǎng) 絡上下載,但它并不同于這些多媒體的文件格式,它可以接收用戶的輸入
17、,動態(tài) 地進行改變,而不僅僅是動畫的顯示和聲音的播放。三、豐富的類庫Java提供了大量的類以滿足網(wǎng)絡化、多線程、面向對象系統(tǒng)的需要。1.語言包提供的支持包括字符串處理、多線程處理、例外處理、數(shù)學函 數(shù)處理等,可以用它簡單地實現(xiàn)Java程序的運行平臺。2.實用程序包提供的支持包括哈希表、堆棧、可變數(shù)組、時間和日期等。3.輸入輸出包用統(tǒng)一的流模型來實現(xiàn)所有格式的I/O,包括文件系統(tǒng)、 網(wǎng)絡、輸入4.低級網(wǎng)絡包用于實現(xiàn)Socket編程。5.抽象圖形用戶接口包實現(xiàn)了不同平臺的計算機的圖形用戶接口部件, 包括窗口、菜單、滾動條、對話框等,使得Java可以移植到不同平臺的機器。6.網(wǎng)絡包支持Interne
18、t的TCP/IP協(xié)議,提供了與In-ternet的接口。 它支持URL連接,WWW的即時訪問,并且簡化了用戶/服務器模型的程序設計。四、Java和C、C+對于變量聲明、參數(shù)傳遞、操作符、流控制等,Java使用了和C、C+ 相同的傳統(tǒng),使得熟悉C、C+的程序員能很方便地進行編程。同時,Java為 了實現(xiàn)其簡單、魯棒、安全等特性,也摒棄了C和C+中許多不合理的內(nèi)容。1.全局變量Java程序中,不能在所有類之外定義全局變量,只能通過在一個類中定 義公用、靜態(tài)的變量來實現(xiàn)一個全局變量。例如:ClassGlobalVar public static global_var; 在類GlobalVar中定義變
19、量global_var為public static,使得其它類 可以訪問和修改該變量。 Java對全局變量進行了更好的封裝。而在C和C+中,依賴于不加封裝 的全局變量常常造成系統(tǒng)的崩潰。2.GotoJava不支持C、C+中的goto語句,而是通過例外處理語句try,Catch, final等來代替C、C+中用goto來處理遇到錯誤時跳轉的情況,使程序更可讀 且更結構化。3.指針指針是C、C+中最靈活,也是最容易產(chǎn)生錯誤的數(shù)據(jù)類型。由指針所進行 的內(nèi)存地址操作常會造成不可預知的錯誤,同時通過指針對某個內(nèi)存地址進行顯 式類型轉換后,可以訪問一個C+中的私有成員,從而破壞安全性,造成系統(tǒng)的 崩潰。而
20、Java對指針進行完全的控制,程序員不能直接進行任何指針操作,例如 把整數(shù)轉化為指針,或者通過指針釋放某一內(nèi)存地址等。同時,數(shù)組作為類在Java 中實現(xiàn),良好地解決了數(shù)組訪問越界這一C、C+中不作檢查的錯誤。4.內(nèi)存管理在C中,程序員通過庫函數(shù)malloc()和free()來分配和釋放內(nèi)存,C+ 中則通過運算符new和delete來分配和釋放內(nèi)存。再次釋放已釋放的內(nèi)存塊或 未被分配的內(nèi)存塊,會造成系統(tǒng)的崩潰;同樣,忘記釋放不再使用的內(nèi)存塊也 會逐漸耗盡系統(tǒng)資源。而在Java中,所有的數(shù)據(jù)結構都是對象,通過運算符new 為它們分配內(nèi)存堆。通過new得到對象的處理權,而實際分配給對象的內(nèi)存可能 隨
21、程序運行而改變,Java對此自動地進行管理并且進行垃圾收集,有效防止了由 于程序員的誤操作而導致的錯誤,并且更好地利用了系統(tǒng)資源。5.數(shù)據(jù)類型的支持在C、C+中,對于不同的平臺,編譯器對于簡單數(shù)據(jù)類型如int,float 等分別分配不同長度的字節(jié)數(shù),例如:int在IBMPC中為16位,在VAX-11中為 32位,這導致了代碼的不可移植性,但在Java中,對于這些數(shù)據(jù)類型總是分 配固定長度的位數(shù),如對int型,它總占32位,這就保證了Java的平臺無關性。6.類型轉換在C、C+中,可以通過指針進行任意的類型轉換,常常帶來不安全性, 而Java中,運行時系統(tǒng)對對象的處理要進行類型相容性檢查,以防止
22、不安全的 轉換。7.頭文件C、C+中用頭文件來聲明類的原型以及全局變量、庫函數(shù)等,在大的系 統(tǒng)中,維護這些頭文件是很困難的。而Java不支持頭文件,類成員的類型和訪 問權限都封裝在一個類中,運行時系統(tǒng)對訪問進行控制,防止對私有成員的操 作。同時,Java中用import語句來與其它類進行通訊,以便使用它們的方法。8.結構和聯(lián)合C、C+中的結構和聯(lián)合中所有成員均為公有,這就帶來了安全性問題。 Java中不包含結構和聯(lián)合,所有的內(nèi)容都封裝在類中。9.預處理C、C+中用宏定義來實現(xiàn)的代碼給程序的可讀性帶來了困難。在Java 中,不支持宏,它通過關鍵字final來聲明一個常量,以實現(xiàn)宏定義中廣泛使 用
23、的常量定義。目錄Java入門(一)Java入門(二)Java入門(三)Java入門(四)Java入門(五)Java入門(六)Java入門(七)Java入門(八)Java入門(九)第一章Java概述(續(xù))1.3.簡單的Java程序下面我們先介紹兩個簡單的Java程序,并對其進行分析。例1.1.public class HelloWorldApp/an applicationpublic static void main(Stringargs )System.out.println(HelloWorld!);本程序的作用是輸出下面一行信息:HelloWorld!程序中,首先用保留字class來聲明
24、一個新的類,其類名為 HelloWorldApp,它是一個公共類(public)。整個類定義由大括號 括起來。在該類中定義了一個main()方法,其中public表示訪問 權限,指明所有的類都可以使用這一方法;static指明該方法是 一個類方法,它可以通過類名直接調(diào)用;void則指明main()方法不 返回任何值。對于一個應用程序來說,main()方法是必需的,而 且必須按照如上的格式來定義。Jave解釋器在沒有生成任何 實例的情況下,以main()作為入口來執(zhí)行程序。Jave程序中可以 定義多個類,每個類中可以定義多個方法,但是最多只能有一 個公共類,main()方法也只能有一個,作為程序
25、的入口。main()方 法定義中,括號()中的Stringargs是傳遞給main()方法的參數(shù),參 數(shù)名為args,它是類String的一個實例,參數(shù)可以為0個或多個,每 個參數(shù)用類名參數(shù)名來指定,多個參數(shù)間用逗號分隔。在 main()方法的實現(xiàn)(大括號中),只有一條語句:System.out.println(HelloWorld!);它用來實現(xiàn)字符串的輸出,這條語句實現(xiàn)與C語言中的 printf語句和C+中cout語句相同的功能。另外,/后的內(nèi)容為 注釋?,F(xiàn)在我們可以運行該程序。首先把它放到一個名為 HelloWorldApp.java的文件中,這里,文件名應和類名相同,因為 Java解釋
26、器要求公共類必須放在與其同名的文件中。然后對 它進行編譯:C:javac HelloWorldApp.java編譯的結果是生成字節(jié)碼文件HelloWorldApp.class。最后用 java解釋器來運行該字節(jié)碼文件:C:java HelloWorldApp結果在屏幕上顯示HelloWorld!我們再來看下面的一個例子:例1.2import java.awr.*;import java.applet.*;public class HelloWorldApplet extends Applet/an appletpublic void paint(Graphicsg)g.drawString(H
27、elloWorld!,20,20);這是一個簡單的Applet(小應用程序)。程序中,首先用 import語句輸入java.awr和java.applet下所有的包,使得該程序可能 使用這些包中所定義的類,它類似于C中的#include語句。然后 聲明一個公共類HelloWorldApplet,用extends指明它是Applet的子類。 在類中,我們重寫父類Ap-plet的paint()方法,其中參數(shù)g為Graphics 類,它表明當前作畫的上下文。在paint()方法中,調(diào)用g的方法 drawString(),在坐標(20,20)處輸出字符串HelloWorld!,其中坐標 是用象素點來表
28、示的。這個程序中沒有實現(xiàn)main()方法,這是Applet與應用程序 Application(如例1)的區(qū)別之一。為了運行該程序,首先我們也 要把它放在文件HelloWorldApplet.java中,然后對它進行編譯: C:javac HelloWorldApplet.java得到字節(jié)碼文件HelloWorldApplet.class。由于Applet中沒有 main()方法作為Java解釋器的入口,我們必須編寫HTML文件,把該 Applet嵌入其中,然后用appletviewer來運行,或在支持Java的瀏覽器 上運行。它的HTML文件如下:HTMLHEADTITLEAnApplet/T
29、ITLE/HEADBODYappletcode=HelloWorldApplet.classwidth=200height=40/applet/BODY/HTML其中用applet標記來啟動HelloWorldApplet,code指明字節(jié)碼 所在的文件,width和height指明applet所占的大小,我們把這個HTML 文件存入Example.html,然后運行:C:appleviewer Example.html這時屏幕上彈出一個窗口,其中顯示HelloWorld!,顯示結果 如圖:從上述例子中可以看出,Java程序是由類構成的,對于一個 應用程序來說,必須有一個類中定義main()方
30、法,而對applet來說, 它必須作為Applet的一個子類。在類的定義中,應包含類變量的 聲明和類中方法的實現(xiàn)。Java在基本數(shù)據(jù)類型、運算符、表 達式、控制語句等方面與C、C+基本上是相同的,但它同時也 增加了一些新的內(nèi)容,在以后的各章中,我們會詳細介紹。本 節(jié)中,只是使大家對Java程序有一個初步的了解。第二章數(shù)據(jù)類型2.1數(shù)據(jù)類型數(shù)據(jù)類型指明了變量或表達式的狀態(tài)和行為。Java的數(shù) 據(jù)類型如下所示:Java不支持C、C+中的指針類型、結構體類型和共用體類型。本章我們主要介紹簡單類型。2.2常量與變量一、常量Java中的常量值是用文字串表示的,它區(qū)分為不同的類型 ,如整型常量123,實型
31、常量1.23,字符常量a,布爾常量true、 false以及字符串常量This is a constant string.。 與C、C+不同,Java中不能通過#define命令把一個標識符定 義為常量,而是用關鍵字final來實現(xiàn),如final doublePI=3.14159(有 關final的用法見6.2.3)。二、變量變量是Java程序中的基本存儲單元,它的定義包括變量名 、變量類型和作用域幾個部分。變量名是一個合法的標識符,它是字母、數(shù)字、下劃 線或美元符的序列,Java對變量名區(qū)分大小寫,變量名不能 以數(shù)字開頭,而且不能為保留字。合法的變量名如:myName、 value-1、do
32、llar等。非法的變量名如:2mail、room#、class(保留 字)等,變量名應具有一定的含義,以增加程序的可讀性。變量類型可以為上面所說的任意一種數(shù)據(jù)類型。變量的作用域指明可訪問該變量的一段代碼。聲明一 個變量的同時也就指明了變量的作用域。按作用域來分,變量 可以有下面幾種:局部變量、類變量、方法參數(shù)、例外處理參 數(shù)。局部變量在方法或方法的一塊代碼中聲明,它的作用域 為它所在的代碼塊(整個方法或方法中的某塊代碼)。類變量在類中聲明,而不是在類的某個方法中聲明,它的 作用域是整個類。方法參數(shù)傳遞給方法,它的作用域就是這個方法。例外處理參數(shù)傳遞給例外處理代碼,它的作用域就是例 外處理部分。
33、在一個確定的域中,變量名應該是唯一的。通常,一個域 用大括號來劃定。有關類變量、參數(shù)傳遞以及例外處理將分別在6.7.1、 6.2.4和第八章中講述。變量的聲明格式為:type identifier=value,identifier=value;例如:inta,b,c;double d1,d2=0.0;其中,多個變量間用逗號隔開,d2=0.0對實型變量d2賦初值 0.0,只有局部變量和類變量是可以這樣賦初值的,而方法參數(shù) 和例外處理參數(shù)的變量值是由調(diào)用者給出的。2.3整型數(shù)據(jù)一、整型常量:與C,C+相同,Java的整常數(shù)有三種形式:十進制整數(shù),如123,-456,0八進制整數(shù),以0開頭,如012
34、3表示十進制數(shù)83,-011表示十 進制數(shù)-9。十六進制整數(shù),以0x或0X開頭,如0x123表示十進制數(shù) 291,-0X12表示十進制數(shù)-18。整型常量在機器中占32位,具有int型的值,對于long型值,則 要在數(shù)字后加L或l,如123L表示一個長整數(shù),它在機器中占64位。二、整型變量:整型變量的類型有byte、short、int、long四種。下表列出 各類型所在內(nèi)存的位數(shù)和其表示范圍。目錄Java入門(一)Java入門(二)Java入門(三)Java入門(四)Java入門(五)Java入門(六)Java入門(七)Java入門(八)Java入門(九)第二章數(shù)據(jù)類型(續(xù))int類型是最常使用
35、的一種整數(shù)類型。它所表示的數(shù)據(jù)范圍 64位處理器。但對于大型計算,常會遇到很大的整數(shù),超出int類 所表示的范圍,這時要使用long類型。由于不同的機器對于多字節(jié)數(shù)據(jù)的存儲方式不同,可能是 低字節(jié)向高字節(jié)存儲,也可能是從高字節(jié)向低字節(jié)存儲,這樣,在 分析網(wǎng)絡協(xié)議或文件格時,為了解決不同機器上 的字節(jié)存儲順序問題,用byte類型來表示數(shù)據(jù)是合適的。而通常 情況下,由于其表示的數(shù)據(jù) 范圍很小,容易造成溢出,應避免使用。short類型則很少使用,它限制數(shù)據(jù)的存儲為先高字節(jié),后低字 節(jié),這樣在某些機器中會出 錯。三、整型變量的定義,如:byte b;/指定變量b為byte型short s;/指定變量s
36、為short型int i;/指定變量i為int型long l;/指定變量l為long型2.4浮點型(實型)數(shù)據(jù)一、實型常量與C,C+相同,Java的實常數(shù)有兩種表示形式:十進制數(shù)形式,由數(shù)字和小數(shù)點組成,且必須有小數(shù)點,如0 .123,.123,123.,123.0科學計數(shù)法形式。如:123e3或123E3,其中e或E之前必須有數(shù) ,且e或E后面的指數(shù)必須為整數(shù)。實常數(shù)在機器中占64位,具有double型的值。對于float型的值, 要在數(shù)字后加f或F,如 12.3F,它在機器中占32位,且表示精度較低。二、實型變量實型變量的類型有float和double兩種,下表列出這兩種類型所 占內(nèi)存的位
37、數(shù)和其表示范 圍。數(shù)據(jù)類型所占位數(shù)數(shù)的范圍float 323.4e-0383.4e+038double 641.7e-3081.7e+308雙精度類型double比單精度類型float具有更高的精度和更大 表示范圍,常常使用。三、實型變量定義,如float f;/指定變量f為float型double d;/指定變量d為double型注與C、C+不同,Java中沒有無符號型整數(shù),而且明確規(guī)定了 整型和浮點型數(shù)據(jù)所占的 內(nèi)存字節(jié)數(shù),這樣就保證了安全性、魯棒性和平臺無關性。2.5字符型數(shù)據(jù)一、字符常量字符常量是用單引號括起來的一個字符,如a,A。? 外,與C、C+相同,Java也提供轉 義字符,以反
38、斜杠()開頭,將其后的字符轉變?yōu)榱硗獾暮x,下? 列出了Java中的轉義字符。與C、C+不同,Java中的字符型數(shù)據(jù)是16位無符號型數(shù)據(jù),它表 示Unicode集,而不僅僅是 ASCII集,例如u0061表示ISO拉丁碼的a。轉義字符描述ddd1到3位8進制數(shù)據(jù)所表示的字符(ddd)uxxxx1到4位16進制數(shù)所表示的字符(xxxx)單引號字符反斜杠字符r回車n換行f走紙換頁t橫向跳格b退格二、字符型變量字符型變量的類型為char,它在機器中占16位,其范圍為0655 35。字符型變量的定義如charc=a;/指定變量c為char型,且賦初值為a與C、C+不同,Java中的字符型數(shù)據(jù)不能用作整
39、數(shù),因為Java不 供無符號整數(shù)類型。但 是同樣可以把它當作整數(shù)數(shù)據(jù)來操作。例如:intthree=3;charone=1;charfour=(char)(three+one);/four=4上例中,在計算加法時,字符型變量one被轉化為整數(shù),進行相加,最后把結果又轉化為字 符型。三、字符串常量與C、C+相同,Java的字符串常量是用雙引號()括起來的一串 字符,如Thisisastring.n。但 不同的是,Java中的字符串常量是作為String類的一個對象來處理, 而不是一個數(shù)據(jù)。有關 類String,我們將在第七章講述。2.6布爾型數(shù)據(jù)布爾型數(shù)據(jù)只有兩個值,true和false,且它們
40、不對應于任何整 值。在流控制中常用到它。 布爾型變量的定義如:boolean b=true;/定義b為布爾型變量,且初值為true2.7舉例例2.1.下例中用到了前面提到的數(shù)據(jù)類型,并通過屏幕顯示 們的值。public class SimpleTypespublic static void main(Stringargs)byte b=0x55;short s=0x55ff;int i=;long l=0xfffL;char c=c;float f=0.23F;double d=0.7E-3;boolean bool=true;System.out.println(b=+b);System.o
41、ut.println(s=+s);System.out.println(i=+i);System.out.println(l=+l);System.out.println(c=+c);System.out.println(f=+f);System.out.println(d=+d);System.out.println(bool=+bool);編譯并運行該程序,輸出結果為:C:java SimpleTypesb=85s=22015i=l=4095c=cf=0.23d=0.0007bool=true2.8各類數(shù)值型數(shù)據(jù)間的混合運算一、自動類型轉換整型、實型、字符型數(shù)據(jù)可以混合運算。運算中,不同類
42、? 的數(shù)據(jù)先轉化為同一類型,然后進行運算。轉換從低級到高級,如下圖:轉換規(guī)則為:(byte或short)opintint(byte或short或int)oplonglong(byte或short或int或long)opfloatfloat(byte或short或int或long或float)opdoubledoublecharopintint其中,箭頭左邊表示參與運算的數(shù)據(jù)類型,op為運算符(如加 減、乘、除等),右邊表示 轉換成的進行運算的數(shù)據(jù)類型。例2.2public class Promotionpublic static void main(Stringargs)byte b=10;c
43、har c=a;int i=90;long l=555L;float f=3.5f;double d=1.234;float f1=f*b;/float*byte-floatint i1=c+i;/char+int-intlong l1=l+i1;/long+int-lingdouble d1=f1/i1-d;/float/int-float,float-double-double二、強制類型轉換高級數(shù)據(jù)要轉換成低級數(shù)據(jù),需用到強制類型轉換,如:int i;byte b=(byte)i;/把int型變量i強制轉換為byte型這種使用可能會導致溢出或精度的下降,最好不要使用。目錄Java入門(一
44、)Java入門(二)Java入門(三)Java入門(四)Java入門(五)Java入門(六)Java入門(七)Java入門(八)Java入門(九)第三章 運算符和表達式運算符指明對操作數(shù)所進行的運算。按操作數(shù)的數(shù)目來分+ -),二元運算符(如+、)和三元運算符(如?:),它們分別對應于一 于一元運算符來說,可以有前綴表達式(如+i)和后綴表達式(如 采用中綴表達式(如a+b)。按照運算符功能來分,基本的運算符? 下面幾類:算術運算符(+,-,*,/,%,+,-)關系運算符(,=,=,=,!=)布爾邏輯運算符(!,&,|)位運算符(,&,|,)賦值運算符(=,及其擴展賦值運算符如+=)條件運算符
45、(?:)其它(包括分量運算符,下標運算符,實例運算符instance of,內(nèi)存分配運算符new,強制類 型轉換運算符(類型),方法調(diào)用運算符()等)本章中我們主要講述前6類運算符。3.1算術運算符算術運算符作用于整型或浮點型數(shù)據(jù),完成算術運算。一、二元算術運算符,如下表所示運算符用法描述+ op1+op2 加- op1-op2 減* op1*op2 乘/ op1/op2 除% op1%op2 取模(求余)Java對加運算符進行了擴展,使它能夠進行字符串的連接,如 abc+de,得到串a(chǎn)bcde。我 們將在第七章中講解。與C、C+不同,對取模運算符%來說,其操作數(shù)可以為浮點數(shù), 如37.2%1
46、0=7.2。二、一元算術運算符,如下表所示:運算符用法描述+ +op 正值- -op 負值+ +op,op+ 加1- -op,op- 減1i+與+i的區(qū)別i+在使用i之后,使i的值加1,因此執(zhí)行完i+后,整個表達式的 ?為i,而i的值變?yōu)閕+1。+i在使用i之前,使i的值加1,因此執(zhí)行完+i后,整個表達式和i 的值均為i+1。對i-與-i同樣。例3.1.下面的例子說明了算術運算符的使用public class ArithmaticOppublic static void main(String args)int a=5+4;/a=9int b=a*2;/b=18int c=b/4;/c=4in
47、t d=b-c;/d=14int e=-d;/e=-14int f=e%4;/f=-2double g=18.4;double h=g%4;/h=2.4int i=3;int j=i+;/i=4,j=3int k=+i;/i=5,k=5System.out.println(a=+a);System.out.println(b=+b);System.out.println(c=+c);System.out.println(d=+d);System.out.println(e=+e);System.out.println(f=+f);System.out.println(g=+g);System.
48、out.println(h=+h);System.out.println(i=+i);System.out.println(j=+j);System.out.println(k=+k);其結果為:C:java ArithmaticOpa=9b=18c=4d=14e=-14f=-2g=18.4h=2.4i=5j=3k=53.2關系運算符關系運算符用來比較兩個值,返回布爾類型的值true或false? 關系運算符都是二元運算 符,如下表所示:運算符用法返回true的情況 op1op2 op1大于op2+ op1=op2 op1大于或等于op2 op1op2 op1小于op2= op1=op2 op
49、1小于或等于op2= op1=op2 op1與op2相等!= op1!=op2 op1與op2不等Java中,任何數(shù)據(jù)類型的數(shù)據(jù)(包括基本類型和組合類型)都可 以通過=或!=來比較是否 相等(這與C、C+不同)。關系運算的結果返回true或false,而不是C、C+中的1或0。關系運算符常與布爾邏輯運算符一起使用,作為流控制語? 的判斷條件。如if(ab&b=c)3.3布爾邏輯運算符布爾邏輯運算符進行布爾邏輯運算,如下表所示:op1 op2 op1&op2 op1|op2 !op1false false false false truefalse true false true truetru
50、e false false true falsetrue true true true false&、為二元運算符,實現(xiàn)邏輯與、邏輯或。!為一元運算符,實現(xiàn)邏輯非。對于布爾邏輯運算,先求出運算符左邊的表達式的值,對或運算如果為true,則整個表 達式的結果為true,不必對運算符右邊的表達式再進行運算;同樣,對與運算,如果左邊表達式 的值為false,則不必對右邊的表達式求值,整個表達式的結果為false。下面的例子說明了關系運算符和布爾邏輯運算符的使用。public class RelationAndConditionOppublic static void main(Stringargs)
51、int a=25,b=3;boolean d=ab;/d=falseSystem.out.println(ab=+d);int e=3;if(e!=0&a/e5)System.out.println(a/e=+a/e);int f=0;if(f!=0&a/f5)System.out.println(a/f=+a/f);elseSystem.out.println(f=+f);其運行結果為:C:java RelationAndConditionOpab=falsea/e=8f=0注意:上例中,第二個if語句在運行時不會發(fā)生除0溢出的錯 ,因為e!=0為false,所以就不需 要對a/e進行運算。3.4位運算符位運算符用來對二進制位進行操作,Java中提供了如下表所 的位運算符: 位運算符中,除以外,其余均為二元運算符。 操作數(shù)只能為整型和字符型數(shù)據(jù)。3.4.1補碼J
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 法律文書智能審核員考試試卷及答案
- 2024成都大學輔導員招聘筆試真題
- 2025年核輻射劑量防護儀器設備項目合作計劃書
- 2025年經(jīng)典心理健康知識競賽考試練習題庫(230題)【答案】
- 2024年鄧州市社區(qū)工作者招聘真題
- 2024年常德市市直中小學校招聘教師考試真題
- 項目管理制度規(guī)定
- 消防月消防知識題庫100道2
- 消防試題題庫4
- 2025年貿(mào)易經(jīng)紀與代理服務項目發(fā)展計劃
- 林木育種學復習試題及答案解析
- GB/T 532-2008硫化橡膠或熱塑性橡膠與織物粘合強度的測定
- GB/T 32891.2-2019旋轉電機效率分級(IE代碼)第2部分:變速交流電動機
- GB/T 18068.1-2012非金屬礦物制品業(yè)衛(wèi)生防護距離第1部分:水泥制造業(yè)
- 2023年黃岡市融資擔保集團有限公司招聘筆試題庫及答案解析
- 電梯維護保養(yǎng)規(guī)則
- (新版)心理傾聽師資格考試備考題庫(精簡250題)
- 宋龍淵道德經(jīng)講義
- 受限空間安全作業(yè)票填寫模板(2022年更新)
- [計算機]力克工藝單軟件kaledo_style案例
- 山東大學生物化學課件緒論
評論
0/150
提交評論