![新Java教程1~5_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/24/56f59597-4aa7-4890-a0e0-7d6a56f666bf/56f59597-4aa7-4890-a0e0-7d6a56f666bf1.gif)
![新Java教程1~5_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/24/56f59597-4aa7-4890-a0e0-7d6a56f666bf/56f59597-4aa7-4890-a0e0-7d6a56f666bf2.gif)
![新Java教程1~5_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/24/56f59597-4aa7-4890-a0e0-7d6a56f666bf/56f59597-4aa7-4890-a0e0-7d6a56f666bf3.gif)
![新Java教程1~5_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/24/56f59597-4aa7-4890-a0e0-7d6a56f666bf/56f59597-4aa7-4890-a0e0-7d6a56f666bf4.gif)
![新Java教程1~5_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-10/24/56f59597-4aa7-4890-a0e0-7d6a56f666bf/56f59597-4aa7-4890-a0e0-7d6a56f666bf5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1章 java語(yǔ)言概述與面向?qū)ο笏枷?1.1 java語(yǔ)言的發(fā)展11.1.1 java語(yǔ)言的產(chǎn)生11.1.2 java語(yǔ)言的發(fā)展11.2 java語(yǔ)言的特點(diǎn)21.3 面向?qū)ο笈c面向過(guò)程的差異31.3.1 面向過(guò)程思想回顧41.3.2 面向?qū)ο笏枷虢榻B41.4 面向?qū)ο蟪绦蛟O(shè)計(jì)中的主要概念和特征41.4.1 主要概念51.4.2 主要特征5*1.5 java與c+的差異51.6本章小結(jié)5習(xí)題5第2章 java語(yǔ)言開(kāi)發(fā)環(huán)境62.1 jdk62.1.1 jdk的簡(jiǎn)介62.1.2 jdk的構(gòu)成62.1.3 jdk的使用62.2 ide92.2.1 ide簡(jiǎn)介92.2.2 jbuilder92.2.3
2、 eclipse92.2.4 相關(guān)資源92.3 project管理92.3.1 project的含義92.3.2 可行的project組織模式92.3.3 主要開(kāi)發(fā)工具的project目錄102.4 本章小結(jié)10習(xí)題10第3章 java語(yǔ)言基礎(chǔ)113.1 標(biāo)識(shí)符和關(guān)鍵字113.1.1 分號(hào)、塊和空白113.1.2 標(biāo)識(shí)符113.1.3 關(guān)鍵字113.2 常數(shù)、常量、變量與基本數(shù)據(jù)類型123.2.1 數(shù)據(jù)類型體系以及基本概念123.2.2 整型133.2.3 浮點(diǎn)型143.2.4 邏輯型143.2.5 字符型143.3 運(yùn)算符與表達(dá)式143.3.1 算術(shù)運(yùn)算符153.3.2 關(guān)系運(yùn)算符153.3
3、.3 邏輯運(yùn)算符153.3.4 賦值運(yùn)算符153.3.5 位運(yùn)算符153.3.6 特殊運(yùn)算符163.3.7 運(yùn)算符的優(yōu)先級(jí)163.4 基本數(shù)據(jù)類型轉(zhuǎn)換163.5 流程控制173.5.1分支結(jié)構(gòu)173.5.2循環(huán)結(jié)構(gòu)173.6本章小結(jié)19習(xí)題19第4章 數(shù)組和字符串204.1數(shù)組204.1.1 一維數(shù)組204.1.2 多維數(shù)組214.1.3 數(shù)組屬性與方法224.2 字符串224.4.1 字符串類224.4.2 字符串類的常用方法234.4.3 字符串運(yùn)算與轉(zhuǎn)換234.3 stringbuffer234.4本章小結(jié)24習(xí)題24第5章 java面向?qū)ο蟪绦蛟O(shè)計(jì)255.1 類與對(duì)象255.1.1 類
4、的定義255.1.2 方法265.1.3 構(gòu)造方法與對(duì)象創(chuàng)建265.1.4 類的封裝275.2 繼承285.2.1 繼承的概念285.2.2 子類的定義語(yǔ)法285.2.3 子類對(duì)象構(gòu)造過(guò)程295.2.4 訪問(wèn)控制和特殊的對(duì)象訪問(wèn)引用符號(hào)295.2.5 變量隱藏和方法覆蓋305.2.6 多態(tài)305.3 特殊修飾控制符305.3.1 static305.3.2 final315.3.3 abstract315.4 對(duì)象的生命周期315.5 object類325.6抽象類和接口325.6.1抽象類325.6.2 接口325.7 內(nèi)部類335.7.1 內(nèi)部類的作用335.7.2 內(nèi)部類的定義和使用33
5、5.7.3 匿名內(nèi)部類335.8 類的編組包335.8.1 包的含義335.8.2 import語(yǔ)句335.8.3 classpath環(huán)境變量345.9本章小結(jié)34習(xí)題類的設(shè)計(jì)35習(xí)題類的使用練習(xí)36習(xí)題綜合練習(xí)36第六章 實(shí)用類與類的設(shè)計(jì)406.1串分解類406.2正則式406.3.1 正則式的語(yǔ)法406.3.2 正則式的使用416.3集合框架416.3.1 概述416.3.2 列表416.3.3 散列表416.3.4 map416.4常用類416.4.1 date類416.4.2 math類416.4.3 calender類416.5 類的設(shè)計(jì)416.5.1 類的分類416.5.2 類的設(shè)
6、計(jì)原則416.5.3 類圖416.5.4 單類設(shè)計(jì)416.5.5 多類設(shè)計(jì)416.6本章小結(jié)41習(xí)題分析設(shè)計(jì)問(wèn)題41習(xí)題重構(gòu)練習(xí)41第7章 java的異常處理427.1 異常的概念427.2 異常處理語(yǔ)法427.2.1 java的異常處理機(jī)制427.2.2 異常的產(chǎn)生與拋出437.2.1 異常的捕獲437.3 自定義異常類447.4本章小結(jié)44習(xí)題44第8 章 i/o流458.1流的概述458.2 file類458.3 字節(jié)流458.3.1 inputstream458.3.2 outptsream458.4 字符流458.4.1 reader458.4.2 writer458.5 文件流45
7、8.5.1 fileinputsteam458.5.2 fileoutptsream458.6 randomaccessfile458.7 其他數(shù)據(jù)流(根據(jù)情況添加內(nèi)容)458.7.1 datainputsteam458.7.2 dataoutptsream45*8.8字符集處理458.8.1 字符集概述458.8.2 java中字符集的處理方法458.9本章小結(jié)45習(xí)題45第9章 多線程459.1 多線程機(jī)制459.1.1 基本概念459.1.2 線程的狀態(tài)459.2 線程類和線程接口(包含簡(jiǎn)單實(shí)例)459.2.1 線程基類459.2.2 線程接口45*9.2.3 線程組459.3 線程的同
8、步與通信459.3.1 線程同步469.3.2 線程通信469.4 線程設(shè)計(jì)(實(shí)際問(wèn)題)469.4.1 基本需求469.4.2 設(shè)計(jì)方案469.5本章小結(jié)46習(xí)題46第10章 圖形用戶界面4610.1 awt和swing組件介紹4610.1.1 awt組件4610.1.2 swing組件4610.2 框架4610.2.1窗口4610.2.2 布局管理器4610.2.3面板4610.3 java事件處理機(jī)制4610.3.1 java事件基本概念4610.3.2 java事件處理機(jī)制4610.3.3 適配器類4610.4 其他常用組件4610.4.1 標(biāo)簽4610.4.2 按鈕4610.4.3選擇
9、框(單選和復(fù)選)4610.4.4文本框4610.4.5 列表框4610.4.6對(duì)話框4610.4.7 菜單4610.5本章小結(jié)46習(xí)題46第11章 網(wǎng)絡(luò)編程4611.1 網(wǎng)絡(luò)編程基礎(chǔ)4711.2 url編程4711.2.1 url類4711.2.1 urlconnection類4711.3 socket編程4711.3.1 socket編程模式4711.3.2 socket和serversocket類47*11.4 udp編程4711.4.1 datagrampacket類4711.4.2 datagramsocket類4711.5本章小結(jié)47習(xí)題47第12章 數(shù)據(jù)庫(kù)編程4712.1 jdbc
10、技術(shù)簡(jiǎn)介4712.1.1 jdbc概述4712.1.2 jdbc編程接口4712.2 基本jdbc編程4712.2.1 連接4712.2.2查詢4712.2.3 更新4712.2.4 事務(wù)4712.3 本章小結(jié)47習(xí)題47第13章 編程實(shí)例4713.1 基本需求描述4713.2 問(wèn)題領(lǐng)域的架構(gòu)抽象4713.3 計(jì)算機(jī)化的架構(gòu)設(shè)計(jì)4713.4本章小結(jié)47習(xí)題47參考文獻(xiàn)4840第1章 java語(yǔ)言概述與面向?qū)ο笏枷?.1 java語(yǔ)言的發(fā)展1.1.1 java語(yǔ)言的產(chǎn)生上世紀(jì)90年代初期,sun公司在研究一種適用于未來(lái)的智能設(shè)備的編程語(yǔ)言,該語(yǔ)言要具有一些新的特性,以避免c+的一些不足。該語(yǔ)言起
11、初命名為oak,來(lái)源于語(yǔ)言作者gosling辦公室窗外的一棵橡樹(shù)(oak)。后來(lái)在注冊(cè)時(shí)候遇到了沖突,于是就從手中的熱咖啡聯(lián)想到了印度尼西亞一個(gè)盛產(chǎn)咖啡的島嶼,中文名叫爪哇,java語(yǔ)言得名于此。隨著internet的迅速發(fā)展,web應(yīng)用日益廣泛,java語(yǔ)言也得到了迅速發(fā)展。1994年,gosling用java開(kāi)發(fā)了一個(gè)實(shí)時(shí)性較高、可靠、安全、有交互功能的新型web瀏覽器,它不依賴于任何硬件平臺(tái)和軟件平臺(tái)。這種瀏覽器名稱為hotjava,并于1995年同java語(yǔ)言一起,正式在業(yè)界對(duì)外發(fā)表,引起了巨大的轟動(dòng),java的地位隨之而得到肯定。此后的發(fā)展非常迅速。java編程語(yǔ)言的句法與c+的句法
12、相似,語(yǔ)義則與small talk tm的語(yǔ)義相似。java編程語(yǔ)言可被用來(lái)創(chuàng)建任何常規(guī)編程語(yǔ)言所能創(chuàng)建的應(yīng)用程序。設(shè)計(jì)java編程語(yǔ)言的主要目標(biāo)是:l 提供一種易于編程的語(yǔ)言,從而消除其它語(yǔ)言在諸如指針運(yùn)算和存儲(chǔ)器管理方面影響健壯性的缺陷。l 利用面向?qū)ο蟮母拍钍钩绦蛘嬲爻蔀橥耆嫦驅(qū)ο蟮某绦?。l 為使代碼盡可能清晰合理、簡(jiǎn)明流暢提供了一種方法。l 為獲得如下兩點(diǎn)益處提供一種解釋環(huán)境:提高開(kāi)發(fā)速度消除編譯鏈接裝載測(cè)試周期;代碼可移植性使操作系統(tǒng)能為運(yùn)行環(huán)境做系統(tǒng)級(jí)調(diào)用。l 為運(yùn)行不止一個(gè)活動(dòng)線程的程序提供了一種方式。l 通過(guò)允許下載代碼模塊,從而當(dāng)程序運(yùn)行時(shí)也能動(dòng)態(tài)支持程序改變。l 為那些
13、保證安全性而裝載的代碼模塊提供了一種檢查方法。精心開(kāi)發(fā)的java核心技術(shù)為上述目標(biāo)的實(shí)現(xiàn)提供了保證,其中包括如下幾個(gè)主要技術(shù):l java虛擬機(jī)l 自動(dòng)垃圾收集l 代碼安全性1.1.2 java語(yǔ)言的發(fā)展java語(yǔ)言的發(fā)展目標(biāo)并不僅僅是一種編程語(yǔ)言,同時(shí)還要構(gòu)建一種開(kāi)發(fā)環(huán)境、一種應(yīng)用環(huán)境、一種部署環(huán)境。作為java語(yǔ)言的最基本支持,sun公司在1996年發(fā)布了java開(kāi)發(fā)工具包jdk 1.0(jdk是java develop kit的簡(jiǎn)稱),其中包括了進(jìn)行java開(kāi)發(fā)所需要的各種實(shí)用程序(編譯、執(zhí)行、文檔生成器等等)、基本類庫(kù)(相當(dāng)于c語(yǔ)言的函數(shù)庫(kù)以及c+的類庫(kù))、程序?qū)嵗鹊取?998年,s
14、un公司發(fā)布了更新的jdk 1.2,由于在技術(shù)思想方面與以前有很多改進(jìn),所以此后的java技術(shù)一般稱之為java 2。隨后,針對(duì)不同的領(lǐng)域特征,java技術(shù)分為三種不同的平臺(tái)(最新的稱謂又去掉了意義模糊的2,如javase):l j2se標(biāo)準(zhǔn)java平臺(tái)j2se是java語(yǔ)言的標(biāo)準(zhǔn)版,指的就是jdk(1.2及其以后版本),包含java基礎(chǔ)類庫(kù)和語(yǔ)法。它用于開(kāi)發(fā)具有豐富的gui(圖形用戶界面)、復(fù)雜邏輯和高性能的桌面應(yīng)用程序。l j2ee企業(yè)級(jí)java平臺(tái)j2ee建立在j2se之上,用于開(kāi)發(fā)和實(shí)施企業(yè)級(jí)應(yīng)用程序。它是一個(gè)標(biāo)準(zhǔn)的多層體系結(jié)構(gòu),可以將企業(yè)級(jí)應(yīng)用程序劃分為客戶層、表示層、業(yè)務(wù)層和數(shù)據(jù)層
15、,主要用于開(kāi)發(fā)和部署分布式、基于組件、安全可靠、可伸縮和易于管理的企業(yè)級(jí)應(yīng)用程序。l j2me嵌入式j(luò)ava技術(shù)平臺(tái)j2me也是建立在j2se之上,主要用于開(kāi)發(fā)具有有限的連接、內(nèi)存和用戶界面能力的設(shè)備應(yīng)用程序。例如移動(dòng)電話(手機(jī))、pda(電子商務(wù))、能夠接入電纜服務(wù)的機(jī)頂盒或者各種終端和其他消費(fèi)電子產(chǎn)品。任何語(yǔ)言建立的應(yīng)用程序的類型或多或少都與應(yīng)用程序的運(yùn)行環(huán)境有關(guān),而java語(yǔ)言一般可以建立如下的兩種程序:l applicationsapplications是一種獨(dú)立的程序,它是一種典型的通用程序,可運(yùn)行于任何具備java運(yùn)行環(huán)境的設(shè)備中。l appletsapplets是一種貯存于www
16、服務(wù)器上的用java編程語(yǔ)言編寫的程序,它通常由瀏覽器下載到客戶系統(tǒng)中,并通過(guò)瀏覽器運(yùn)行。applets通常較小,以減少下載時(shí)間,它由超文本標(biāo)識(shí)語(yǔ)言(html)的web頁(yè)來(lái)調(diào)用。java運(yùn)行環(huán)境具有一些特殊性,或者有很多特殊的人為建立的運(yùn)行環(huán)境,所以java編程中經(jīng)常建立各種組件,它們可以在特定環(huán)境中運(yùn)行,如servlet、javabean、jsp等。在java技術(shù)體系中,有很多免費(fèi)或非免費(fèi)的第三方j(luò)ava組件,他們往往提供了某一方面的解決方案,可以應(yīng)用在很多項(xiàng)目的開(kāi)發(fā)過(guò)程中。學(xué)習(xí)java語(yǔ)言需要逐漸了解java技術(shù)體系,從局部細(xì)節(jié)開(kāi)始學(xué)習(xí),從整體中進(jìn)行認(rèn)識(shí)并選擇方向,從應(yīng)用中進(jìn)行鞏固提高。1
17、.2 java語(yǔ)言的特點(diǎn)java語(yǔ)言適用于internet環(huán)境,是一種被廣泛使用的網(wǎng)絡(luò)編程語(yǔ)言,它具有如下的一些特點(diǎn):l 簡(jiǎn)單java語(yǔ)言的語(yǔ)法規(guī)則和c+類似,但java語(yǔ)言取消了指針和多重繼承,統(tǒng)一使用引用來(lái)指示對(duì)象(c+中有兩種形式,實(shí)際上是兩種產(chǎn)生對(duì)象的途徑,而java中只有一種),通過(guò)自動(dòng)垃圾收集免去了程序設(shè)計(jì)人員對(duì)于內(nèi)存塊的釋放工作。l 面向?qū)ο螅ń谕耆﹋ava語(yǔ)言為了提高效率,定義了幾個(gè)基本的數(shù)據(jù)類型以非類的方式實(shí)現(xiàn),余下的所有數(shù)據(jù)類型都以類的形式進(jìn)行封裝,程序系統(tǒng)的構(gòu)成單位也是類。因而幾乎可以認(rèn)為是完全面向?qū)ο?。l 平臺(tái)無(wú)關(guān)性(可移植、跨平臺(tái))java虛擬機(jī)(jvm)是在各種
18、體系結(jié)構(gòu)真實(shí)機(jī)器中用軟件模擬實(shí)現(xiàn)的一種想象機(jī)器,必要時(shí)候可以用硬件實(shí)現(xiàn)。當(dāng)然,這些虛擬機(jī)內(nèi)部實(shí)現(xiàn)各異,但其功能是一致的執(zhí)行統(tǒng)一的java虛擬機(jī)指令。java編譯器將java 應(yīng)用程序的源代碼文件(.java)翻譯成java字節(jié)碼文件(.class),它是由java虛擬機(jī)指令構(gòu)成的。由于是虛擬機(jī)器,因而java虛擬機(jī)執(zhí)行java程序的過(guò)程一般稱為解釋。依賴于虛擬機(jī)技術(shù),java語(yǔ)言具有與機(jī)器體系結(jié)構(gòu)無(wú)關(guān)的特性,即java程序一旦編寫好之后,不需進(jìn)行修改就可以移植到任何一臺(tái)體系結(jié)構(gòu)不同的機(jī)器上。從操作系統(tǒng)的角度看,執(zhí)行一次java程序的過(guò)程就是執(zhí)行一次java 虛擬機(jī)進(jìn)程的過(guò)程。l 面向網(wǎng)絡(luò)編程j
19、ava語(yǔ)言產(chǎn)生之初就面向網(wǎng)絡(luò),在jdk中包括了支持tcp/ip、http和ftp等協(xié)議的類庫(kù)。l 多線程支持多線程是程序同時(shí)執(zhí)行多個(gè)任務(wù)的一種功能。多線程機(jī)制能夠使應(yīng)用程序并行執(zhí)行多項(xiàng)任務(wù),其同步機(jī)制保證了各線程對(duì)共享數(shù)據(jù)的正確操作。l 良好的代碼安全性運(yùn)行時(shí)(runtime)一詞強(qiáng)調(diào)以動(dòng)態(tài)的角度看程序,研究程序運(yùn)行時(shí)候的動(dòng)態(tài)變化,也用運(yùn)行時(shí)環(huán)境一詞表達(dá)類似的含義。java技術(shù)的很多工作是在運(yùn)行時(shí)完成的,如加強(qiáng)代碼安全性的校驗(yàn)操作。一般地,java技術(shù)的運(yùn)行環(huán)境執(zhí)行如下三大任務(wù):l 加載代碼由類加載器執(zhí)行類加載器為程序的執(zhí)行加載所需要的全部類(盡可能而未必同時(shí))。l 校驗(yàn)代碼由字節(jié)碼校驗(yàn)器執(zhí)行
20、java代碼在實(shí)際運(yùn)行之前要經(jīng)過(guò)幾次測(cè)試。字節(jié)碼校驗(yàn)器對(duì)程序代碼進(jìn)行四遍校驗(yàn),這可以保證代碼符合jvm規(guī)范并且不破壞系統(tǒng)的完整性。如檢查偽造指針、違反對(duì)象訪問(wèn)權(quán)限或試圖改變對(duì)象類型的非法代碼。l 執(zhí)行代碼由運(yùn)行時(shí)的解釋器執(zhí)行l(wèi) 自動(dòng)垃圾收集許多編程語(yǔ)言都允許在程序運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存塊,分配內(nèi)存塊的過(guò)程由于語(yǔ)言句法不同而有所變化,但總是要返回指向存儲(chǔ)區(qū)起始位置的指針。在c,c+ 及其它一些語(yǔ)言中,程序員負(fù)責(zé)取消分配內(nèi)存塊。有時(shí)這是一件很困難的事情。因?yàn)槌绦騿T并不總是事先知道內(nèi)存塊應(yīng)在何時(shí)被釋放。當(dāng)在系統(tǒng)中沒(méi)有能夠被分配的內(nèi)存塊時(shí),可導(dǎo)致程序癱瘓,這種程序被稱作具有內(nèi)存漏洞。當(dāng)分配內(nèi)存塊不再需要時(shí)
21、,程序或運(yùn)行環(huán)境應(yīng)取消分配內(nèi)存塊。l 垃圾收集就是將不再需要的已分配內(nèi)存塊回收。l 在其它一般的語(yǔ)言中,取消分配是程序員的責(zé)任。l java編程語(yǔ)言提供了一種系統(tǒng)級(jí)線程以跟蹤存儲(chǔ)區(qū)分配,來(lái)完成垃圾收集:n 可檢查和釋放不再需要的存儲(chǔ)塊n 可自動(dòng)完成上述工作n 可在jvm實(shí)現(xiàn)周期中,產(chǎn)生意想不到的變化l 良好的代碼健壯性java能夠檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤。類型檢查能幫助用戶檢查出許多在開(kāi)發(fā)早期出現(xiàn)的錯(cuò)誤。同時(shí)很多集成開(kāi)發(fā)工具(ide)的出現(xiàn)使編譯和運(yùn)行java程序更加容易,并且很多集成開(kāi)發(fā)工具(如eclipse)都是免費(fèi)的。1.3 面向?qū)ο笈c面向過(guò)程的差異一種程序設(shè)計(jì)語(yǔ)言的產(chǎn)生,不僅是程序
22、設(shè)計(jì)技術(shù)的改進(jìn),也包含了表達(dá)和認(rèn)知思想的進(jìn)步。以c語(yǔ)言為代表的部分早期語(yǔ)言,被稱為面向過(guò)程的語(yǔ)言,不僅因?yàn)槠涑绦蛟O(shè)計(jì)的表達(dá)形式是以過(guò)程為基本元素,本質(zhì)上更在于此時(shí)對(duì)計(jì)算機(jī)化的系統(tǒng)的理解的主導(dǎo)思想還是控制流或者數(shù)據(jù)流的,構(gòu)成系統(tǒng)的要素是模塊處理邏輯。面向?qū)ο笳Z(yǔ)言的產(chǎn)生,是因?yàn)閷?duì)于系統(tǒng)的理解或抽象到了更為高級(jí)的層次。此時(shí)的認(rèn)知思想不僅更接近于現(xiàn)實(shí)世界,其抽象程度也很高。因而,既有易懂的一方面,也有難懂的另一方面,就看理解的境界了。1.3.1 面向過(guò)程思想回顧面向過(guò)程思想和程序設(shè)計(jì)語(yǔ)言的體現(xiàn),可以簡(jiǎn)單總結(jié)為以下幾條:對(duì)系統(tǒng)的認(rèn)識(shí)采用結(jié)構(gòu)化分析的過(guò)程自頂向下,逐步求精地進(jìn)行功能分解;每個(gè)功能就是處理數(shù)
23、據(jù)的一個(gè)模塊,因而ipo描述充分刻畫了模塊的內(nèi)外特征;每個(gè)模塊都是控制流的,因而有典型的三種程序結(jié)構(gòu)順序、分支、循環(huán);模塊間的關(guān)系通過(guò)調(diào)用維系,因而模塊成為了函數(shù),這也是面向過(guò)程方式下最主要的代碼重用方式;盡管函數(shù)調(diào)用有參數(shù)和返回值,但數(shù)據(jù)總是和函數(shù)分開(kāi)的,不僅有了著名的斷言程序=算法+數(shù)據(jù),也使得絕對(duì)平等產(chǎn)生了無(wú)序的麻煩所有的函數(shù)和數(shù)據(jù)的關(guān)聯(lián)關(guān)系沒(méi)有限制;如果要使用數(shù)據(jù)流,那么只能是在數(shù)據(jù)產(chǎn)生之后的適當(dāng)時(shí)機(jī)調(diào)用函數(shù)。這一時(shí)期的主要缺點(diǎn)是:對(duì)系統(tǒng)的理解比較難,系統(tǒng)地開(kāi)發(fā)效率低,代碼的可重用性差。1.3.2 面向?qū)ο笏枷虢榻B面向?qū)ο笏枷?,?duì)現(xiàn)實(shí)世界采用直觀的理解,計(jì)算機(jī)化時(shí)候采用深度的抽象,簡(jiǎn)單
24、地可以總結(jié)如下:系統(tǒng)是由事物構(gòu)成的,事物之間是有聯(lián)系的,復(fù)雜的事物也是系統(tǒng);系統(tǒng)與系統(tǒng)、系統(tǒng)與事物、事物與事物之間是有明確界限(邊界)的;系統(tǒng)或事物的狀態(tài)刻畫可以用屬性表示,屬性一般是些簡(jiǎn)單的數(shù)據(jù),如果復(fù)雜那就是事物了;系統(tǒng)或事物的狀態(tài)會(huì)發(fā)生變化,稱為行為,產(chǎn)生變化是有原因的(內(nèi)部的或外部的),變化的過(guò)程可能是復(fù)雜的;不同的事物之間會(huì)具有共同的屬性和行為,共同的極端情形就是完全包含?;谝陨系恼J(rèn)識(shí),一個(gè)運(yùn)行時(shí)(動(dòng)態(tài))的具體系統(tǒng)或事物,是由幾個(gè)更小的具體事物構(gòu)成(極端的事物就是一個(gè)簡(jiǎn)單的屬性數(shù)據(jù)),它們是不斷發(fā)生變化的。如果對(duì)事物這一概念進(jìn)行了有效的抽象,那么問(wèn)題就迎刃而解。首先,將任何一個(gè)具體
25、的事物稱為對(duì)象(object),它的極端情形就是過(guò)去的變量;事物是分類的,每一類事物都具有統(tǒng)一的屬性和行為,即類型抽象數(shù)據(jù)類型,簡(jiǎn)稱為類(class);行為既然是過(guò)程,那么就抽象成函數(shù),命名為方法,以示區(qū)別。例如:描述身高或姓名,各自只是一個(gè)簡(jiǎn)單的數(shù)據(jù)變量;描述一個(gè)學(xué)生,可以使用學(xué)號(hào)、姓名、宿舍、班級(jí)等;那更換宿舍算什么呢!那描述宿舍、班級(jí),又要有許多個(gè)項(xiàng)目。1.4 面向?qū)ο蟪绦蛟O(shè)計(jì)中的主要概念和特征面向?qū)ο蟪绦蛟O(shè)計(jì)(object oriented programming,oop)語(yǔ)言中,為了進(jìn)行更為高度的抽象,會(huì)引入一些現(xiàn)實(shí)世界中難于找到的概念,但對(duì)于一個(gè)程序語(yǔ)言來(lái)說(shuō)確實(shí)很有價(jià)值的。以下暫時(shí)
26、介紹的概念基本上都來(lái)源于對(duì)現(xiàn)實(shí)世界的抽象,要從程序設(shè)計(jì)的角色中去理解它們。面向?qū)ο蟪绦蛟O(shè)計(jì)使系統(tǒng)更易于理解,也使代碼具有更好的重用性、可擴(kuò)展性、易于管理和維護(hù)。1.4.1 主要概念1、類類是對(duì)一類事物的抽象表示,其角色就相當(dāng)于數(shù)據(jù)類型,當(dāng)然可以算作復(fù)雜的數(shù)據(jù)類型。如學(xué)生、宿舍、班級(jí)。2、對(duì)象對(duì)象表示一個(gè)具體的事物,其角色就是變量,即一個(gè)復(fù)雜數(shù)據(jù)類型xx類的變量。如周瑜、張飛、瑜飛居,飛虎班。3、成員一個(gè)事物的構(gòu)成元素,討論類的時(shí)候就是虛擬的,討論對(duì)象的時(shí)候就是具體的。如在類中,一個(gè)變量屬于成員成員變量,一個(gè)對(duì)象也屬于成員成員對(duì)象,一個(gè)函數(shù)也屬于成員成員方法。1.4.2 主要特征oop語(yǔ)言有三個(gè)
27、特征:封裝、繼承及多態(tài)性。1、封裝類的構(gòu)成包括成員變量/對(duì)象與成員方法,這樣將相關(guān)的數(shù)據(jù)與函數(shù)包裝在一起,同其他的類相區(qū)分,就是封裝。顯然,避免了面向過(guò)程語(yǔ)言的平行缺陷,說(shuō)明了類和成員之間的所屬關(guān)系。進(jìn)一步地,可以限制類的成員在外部的可見(jiàn)性,那么就將封裝體現(xiàn)得更完美。2、繼承當(dāng)一種事物甲完全是另一種事物乙的特例,那么,一般地,類甲只是比類乙多出一些成員變量/對(duì)象與成員方法,稱為類甲繼承類乙,類甲稱為(類乙的)子類,類乙稱為(類甲的)父類。父類也稱為基類、超類,子類也稱為導(dǎo)出類、派生類。顯然編寫子類就沒(méi)有必要重復(fù)書(shū)寫父類中乙有的代碼部分,這是oop中最典型的代碼重用。3、多態(tài)多態(tài)表示一個(gè)類的某種
28、行為存在多種實(shí)現(xiàn)版本。簡(jiǎn)單的情況是在一個(gè)類中,給出多種不同的實(shí)現(xiàn),復(fù)雜的情況是在多個(gè)子類中各自給出不同的實(shí)現(xiàn)。*1.5 java與c+的差異1.6本章小結(jié)習(xí)題1解釋java語(yǔ)言的三種平臺(tái)。2解釋支撐java語(yǔ)言目標(biāo)的三種主要技術(shù)(自查資料完善)。3關(guān)于面向?qū)ο笈c面向過(guò)程的不同,從問(wèn)題理解和問(wèn)題表示兩種角度,按照個(gè)人的理解和認(rèn)識(shí),例示其不同的地方。第2章 java語(yǔ)言開(kāi)發(fā)環(huán)境2.1 jdk2.1.1 jdk的簡(jiǎn)介可以從sun公司的官方網(wǎng)站()上下載java開(kāi)發(fā)工具包(jdk)。不必要求最新的版本,注意java se、windows平臺(tái)等信息。如:jdk-1_5_0_17-windows-i586
29、-p.exe2.1.2 jdk的構(gòu)成2.1.3 jdk的使用1、安裝過(guò)程簡(jiǎn)單,基本使用默認(rèn)設(shè)置,注意安裝目錄(最好簡(jiǎn)單化)。2、設(shè)置環(huán)境變量環(huán)境變量應(yīng)用程序運(yùn)行時(shí)候需要的一些相對(duì)固定值的參數(shù)。例如,java開(kāi)發(fā)工具等軟件需要使用jdk,那么必須知道jdk在系統(tǒng)中的什么位置,于是大家約定在操作系統(tǒng)中定義一個(gè)名稱為java_home的環(huán)境變量,其內(nèi)容表示jdk的安裝目錄。在win2000/2003中的方法:操作【我的電腦】【屬性】【高級(jí)】【環(huán)境變量】后,在【系統(tǒng)變量】區(qū)域進(jìn)行新建、編輯等操作即可。java_home必設(shè)的環(huán)境變量,表示jdk安裝目錄(如c:javajdk1.5.0_17)。(第一次
30、是新建)path名稱程序查找路徑。如果需要在命令行方式下使用java的話,修改其內(nèi)容,在前面增加jdk命令目錄,不同項(xiàng)目中間使用分號(hào)分隔。(修改,增加%java_home%bin)classpath類庫(kù)設(shè)置。(新建,.; c:javajdk1.5.0_17 libtools.jar)。3、使用l 創(chuàng)建程序可以使用最簡(jiǎn)單的文本編輯器,編寫如下的程序,保存的名字必須是hello.java。package chap01; /當(dāng)前類所屬包名稱public class hello /當(dāng)前類名 public static void main(string args) /應(yīng)用程序的主函數(shù) system.ou
31、t.println("hello, 我的第一個(gè)java應(yīng)用程序!"); /輸出函數(shù) l 程序內(nèi)容解釋在以上的程序中,必須了解并逐漸熟悉的關(guān)鍵點(diǎn):n 聲明包名chap01,指明類的位置(所屬包)、相當(dāng)于文件夾名稱,用途在于方便類的組織和管理;n 聲明類名hello,與程序文件名相同(指必須的public類);n 類屬性public,描述類的可見(jiàn)性,即類和其它類、包的關(guān)系;n 主函數(shù)main,程序入口(僅applications類型需要);n 主函數(shù)屬性public static,公有、靜態(tài)(特殊的函數(shù));n 主函數(shù)的參數(shù)string args,命令行參數(shù)(如果執(zhí)行程序時(shí)候給了
32、參數(shù),將會(huì)由系統(tǒng)封裝成字符串?dāng)?shù)組傳遞到這里,程序內(nèi)部可以從此獲得并處理);n 輸出函數(shù)這是java類庫(kù)中提供的一個(gè)在標(biāo)準(zhǔn)輸出設(shè)備(顯示器、字符輸出,對(duì)于操作系統(tǒng)來(lái)說(shuō)是可以重定向的設(shè)備)顯示文本的函數(shù)。注意其中出現(xiàn)的類名稱system、成員對(duì)象名稱out、成員方法名稱println,書(shū)寫語(yǔ)法以及參數(shù)。從幫助中可以方便地查找到函數(shù)的參數(shù)語(yǔ)法;n 整個(gè)類的框架括號(hào)等表達(dá)的結(jié)構(gòu)。n 注釋格式/表示行注釋,本行后面的內(nèi)容為注釋;/*/表示塊注釋,其中的內(nèi)容為注釋。以上的內(nèi)容在一個(gè)java應(yīng)用程序中幾乎是必需的。l 典型源文件布局一個(gè)java源文件可包含三個(gè)“頂級(jí)”要素:n 一個(gè)包聲明(可選,沒(méi)有表示頂級(jí)
33、包,但有點(diǎn)麻煩);n 任意數(shù)量的導(dǎo)入語(yǔ)句import,表示將要使用的外部java類;n 類和接口聲明。該三要素必須以上述順序出現(xiàn)。即,任何導(dǎo)入語(yǔ)句出現(xiàn)在所有類定義之前;如果使用包聲明,則包聲明必須出現(xiàn)在類和導(dǎo)入語(yǔ)句之前。如果需要或者說(shuō)是遵循編程規(guī)范,那么在文件開(kāi)頭可以使用如下形式的文檔注釋:/*文檔信息描述*/這種形式的注釋可以被專門的文檔生成工具所處理(由javadoc命令生成的html文件)。l 程序編譯如下圖中的命令javac hello.java。注意編譯后的文件變化。l 程序運(yùn)行如下圖中的命令java chap01.hello。l 命令窗口與簡(jiǎn)單命令解釋有多種形式打開(kāi)如下的命令窗口,
34、注意其中常見(jiàn)的命令的含義以及其成功執(zhí)行的前提。一條命令一般由 命令動(dòng)詞+空格+參數(shù) 構(gòu)成,并以回車結(jié)束。命令動(dòng)詞中如果不包含路徑那么將從默認(rèn)的路徑中查找命令程序,命令可能的參數(shù)內(nèi)容以及形式取決于程序本身,如果需要,可以使用諸如 java -? 或 java help 形式獲得。d:切換當(dāng)前分區(qū);cd切換當(dāng)前某分區(qū)下的工作文件夾,需要參數(shù);md創(chuàng)建新的文件夾,需要參數(shù);copy拷貝文件;2.2 ide2.2.1 ide簡(jiǎn)介ide的含義是java集成開(kāi)發(fā)環(huán)境(integrated development environment,ide)。有很多ide可供選擇,典型的如jbuilder、eclips
35、e等。2.2.2 jbuilderjbuilder是使用java開(kāi)發(fā)的,支持j2ee技術(shù)的java集成開(kāi)發(fā)環(huán)境。但jbuilder不是完全免費(fèi)的。jbuilder的安裝程序存放在機(jī)器中的c:javajbx中,兩個(gè)目錄相當(dāng)于兩張光盤,安裝時(shí)候當(dāng)出現(xiàn)安裝項(xiàng)目列表時(shí)候只選第一個(gè)即可,安裝后的處理按照其中的說(shuō)明文件進(jìn)行,解密環(huán)節(jié)或許需要執(zhí)行若干次。最好先安裝jdk。如果出現(xiàn)解密命令失敗,一般是path環(huán)境變量設(shè)置問(wèn)題。2.2.3 eclipseeclipse是基于java的,開(kāi)放源碼的、可擴(kuò)展的應(yīng)用開(kāi)發(fā)平臺(tái),它為編程人員提供了一流的java集成開(kāi)發(fā)環(huán)境(integrated development e
36、nvironment,ide)。是一個(gè)可以用于構(gòu)建集成web和應(yīng)用程序的開(kāi)發(fā)工具平臺(tái),其本身并不會(huì)提供大量的功能,而是通過(guò)插件來(lái)實(shí)現(xiàn)程序的快速開(kāi)發(fā)功能。eclipse是一個(gè)成熟的可擴(kuò)展的體系結(jié)構(gòu)。它為創(chuàng)建可擴(kuò)展的開(kāi)發(fā)環(huán)境提供了一個(gè)平臺(tái)。這個(gè)平臺(tái)允許任何人構(gòu)建與環(huán)境或其他工具無(wú)縫集成的工具,而工具與eclipse無(wú)縫集成的關(guān)鍵是插件。eclipse還包括插件開(kāi)發(fā)環(huán)境(pde),pde主要針對(duì)那些希望擴(kuò)展eclipse的編程人員而設(shè)定的。這也正是eclipse最具魅力的地方。通過(guò)不斷的集成各種插件,eclipse的功能也在不斷的擴(kuò)展,以便支持各種不同的應(yīng)用。雖然eclipse是針對(duì)java語(yǔ)言而設(shè)
37、計(jì)開(kāi)發(fā)的,但是它的用途并不局限于java語(yǔ)言,通過(guò)安裝不同的插件eclipse還可以支持諸如c/c+、php、cobol等編程語(yǔ)言。eclipse利用java語(yǔ)言寫成,所以eclipse可以支持跨平臺(tái)操作,但是需要swt(standard widget toolkit)的支持,不過(guò)這已經(jīng)不是什么大問(wèn)題了,因?yàn)閟wt已經(jīng)被移植到許多常見(jiàn)的平臺(tái)上,例如windows、linux、solaris等多個(gè)操作系統(tǒng),甚至可以應(yīng)用到手機(jī)或者pda程序開(kāi)發(fā)中。2.2.4 相關(guān)資源需要關(guān)注各家公司的官網(wǎng)、以及對(duì)應(yīng)中文網(wǎng)站。還有如這樣的綜合性技術(shù)網(wǎng)站。2.3 project管理2.3.1 project的含義pr
38、oject即項(xiàng)目或工程,幾乎所有的ide,使用時(shí)候必須先建立project,才可以創(chuàng)建程序、編譯程序、運(yùn)行程序、修改程序、調(diào)試程序。如果有一種非常理想和完善的ide工具,那么它可以管理一個(gè)project的所有文檔資源和生命周期。最好是從軟件工程的角度去思考和理解project。2.3.2 可行的project組織模式學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言,首先要學(xué)會(huì)管理自己的代碼資源,使用合理的組織方式。影響實(shí)際項(xiàng)目開(kāi)發(fā)中的工程組織方式有多種因素:軟件生命周期的不同階段、項(xiàng)目的功能結(jié)構(gòu)、項(xiàng)目關(guān)聯(lián)人員角色、文檔分類等。在本書(shū)的學(xué)習(xí)中,建議每章組織為一個(gè)工程,章內(nèi)所有例子、習(xí)題以及自己創(chuàng)建的程序能夠分門別類(文件夾=包
39、)進(jìn)行組織。平時(shí)管理好自己的勞動(dòng)成果,要有代碼資源的積累。2.3.3 主要開(kāi)發(fā)工具的project目錄2.4 本章小結(jié)習(xí)題1. 建立一個(gè)總結(jié)文檔,分章節(jié)記錄以后學(xué)習(xí)實(shí)踐過(guò)程中的一些關(guān)鍵的操作過(guò)程和技巧、問(wèn)題的解決方法、總結(jié)等。以便以后查閱。2練習(xí)jdk的安裝、編譯并執(zhí)行hello或自己編寫的應(yīng)用程序。3改造hello程序,自定義三個(gè)整型變量a、b、c并賦值,然后適當(dāng)?shù)靥幚肀WCa最大、c最小,再按從大到小順序輸出。編程時(shí)候主函數(shù)的代碼中,除了輸出函數(shù)之外,其它可以按照c語(yǔ)言的語(yǔ)法進(jìn)行。4. 安裝jbuilder,嘗試創(chuàng)建工程、建立程序、編譯、運(yùn)行、修改、調(diào)試。此過(guò)程中,關(guān)注其中的少量主菜單(文件
40、、工程、運(yùn)行)中的主要功能。4. 查閱jbuilder幫助,通過(guò)system類最終找到輸出函數(shù)print系列適當(dāng)閱讀。第3章 java語(yǔ)言基礎(chǔ)3.1 標(biāo)識(shí)符和關(guān)鍵字3.1.1 分號(hào)、塊和空白在java編程語(yǔ)言中,語(yǔ)句是由分號(hào)(;)終止的代碼,一條語(yǔ)句可占多行。一個(gè)塊(block)或一個(gè)復(fù)合語(yǔ)句是以上括號(hào)和下括號(hào)()為邊界的語(yǔ)句集合;函數(shù)體、類體也是塊。塊語(yǔ)句可以嵌套。3.1.2 標(biāo)識(shí)符在java編程語(yǔ)言中,標(biāo)識(shí)符是賦予變量、類或方法的名稱。標(biāo)識(shí)符可從一個(gè)字母、下劃線(_)或美元符號(hào)($)開(kāi)始,隨后也可跟數(shù)字。標(biāo)識(shí)符是大小寫區(qū)別對(duì)待的并且未規(guī)定最大長(zhǎng)度。有效標(biāo)識(shí)符如下:identifieruse
41、rnameuser_name_sys_varl$changejava源程序采用有效的16-bit 雙字節(jié)字符編碼標(biāo)準(zhǔn)(unicode) ,而不是8-bit ascii文本。因而,一個(gè)字母有著更廣泛的定義,而不僅僅是a到z和a到z。謹(jǐn)慎對(duì)待非ascii字符,因?yàn)閡nicode可支持看似相同而實(shí)際不同的字符。標(biāo)識(shí)符不能是關(guān)鍵字,但是它可包含一個(gè)關(guān)鍵字作為它的名字的一部分。例如,thisone是一個(gè)有效標(biāo)識(shí)符,但this卻不是,因?yàn)閠his是一個(gè)java關(guān)鍵字。3.1.3 關(guān)鍵字表3-1 java編程語(yǔ)言中的關(guān)鍵字abstractdoimplementsprivatethrowbooleandoub
42、leimportprotectedthrowsbreakelseinstanceofpublictransientbyteextendsintreturntruecasefalseinterfaceshorttrycatchfinallongstaticvoidcharfinallynativesupervolatileclassfloatnewswitchwhilecontinuefornullsynchronizeddefaultifpackagethis關(guān)鍵字對(duì)java技術(shù)編譯器有特殊的含義,它們可標(biāo)識(shí)數(shù)據(jù)類型名或程序構(gòu)造(construct)名。以下是有關(guān)關(guān)鍵字的重要注意事項(xiàng):l tr
43、ue、false和null為小寫,而不是象在c+語(yǔ)言中那樣為大寫。嚴(yán)格地講,它們不是關(guān)鍵字,而是文字。然而,這種區(qū)別是理論上的。l 無(wú)sizeof運(yùn)算符;所有類型的長(zhǎng)度和表示是固定的,不依賴執(zhí)行機(jī)器環(huán)境。l 沒(méi)有g(shù)oto和const字。3.2 常數(shù)、常量、變量與基本數(shù)據(jù)類型3.2.1 數(shù)據(jù)類型體系以及基本概念1、java基本數(shù)據(jù)類型體系java編程語(yǔ)言定義了八個(gè)原始數(shù)據(jù)類型(非類類型)和一種特殊類型(類類型)。原始類型可分為四種:l 邏輯類型 booleanl 字符類型 char l 整數(shù)類型 byte、short、int、longl 浮點(diǎn)類型 double、float它們都是非引用類型其變量
44、就是內(nèi)存單元、內(nèi)存單元存儲(chǔ)的就是數(shù)據(jù)。示例如下:一個(gè)特定長(zhǎng)度的內(nèi)存單元,其中存放一個(gè)特定編碼格式的數(shù)據(jù),高級(jí)語(yǔ)言中為了方便使用和描述,賦予它一個(gè)特定的符號(hào)名稱,如 x=3;0000 0003hvoid不再作為類型出現(xiàn),僅在表示函數(shù)沒(méi)有返回值的時(shí)候使用。作為面向?qū)ο笳Z(yǔ)言,支持復(fù)雜的數(shù)據(jù)類型抽象抽象數(shù)據(jù)類型,因而所有不能使用原始數(shù)據(jù)類型表達(dá)的問(wèn)題都使用抽象數(shù)據(jù)類型。為了統(tǒng)一抽象機(jī)制,java語(yǔ)言中建立了一個(gè)object類,作為java語(yǔ)言中所有類的基類,其中定義了一些重要的方法和屬性。另外,java的對(duì)象統(tǒng)一使用new操作符在內(nèi)存堆中動(dòng)態(tài)創(chuàng)建,沒(méi)有了c+的全局對(duì)象或堆棧對(duì)象的建立方式,只
45、對(duì)應(yīng)其對(duì)象指針?lè)绞?。c+的對(duì)象定義語(yǔ)法如下:student s; /自動(dòng)在全局?jǐn)?shù)據(jù)區(qū)中建立一個(gè)對(duì)象或函數(shù)的??臻g中建立一個(gè)對(duì)象,程序中賦予特定的符號(hào)名字以求方便,程序員不需要考慮空間歸還問(wèn)題。student* sp = new student(); /在內(nèi)存堆中動(dòng)態(tài)創(chuàng)建一個(gè)對(duì)象,sp指向它,程序員必需在適當(dāng)時(shí)候使用delete sp進(jìn)行空間歸還。一個(gè)特定長(zhǎng)度的內(nèi)存單元,其中存放一個(gè)特定對(duì)象的引用,高級(jí)語(yǔ)言中為了方便使用和描述,賦予它一個(gè)特定的符號(hào)名稱,如sp。java放棄了第一種方式,因而語(yǔ)法上可以統(tǒng)一取消*符號(hào),形如sp的角色便有了新的名字引用變量變量也是內(nèi)存單元,但其內(nèi)容是地址,無(wú)值為nu
46、ll,有值為類的實(shí)例對(duì)象的地址,指向?qū)ο?。關(guān)系如下:一個(gè)特定類的實(shí)例對(duì)象,存放在堆中,為了有效的內(nèi)存管理機(jī)制,高級(jí)語(yǔ)言中不賦予名字,無(wú)法直接訪問(wèn)。堆中實(shí)際給學(xué)生對(duì)象分配的空間學(xué)生對(duì)象的地址及其封裝引用變量和對(duì)象之間的這種關(guān)系,使得語(yǔ)法上訪問(wèn)對(duì)象必須通過(guò)引用變量進(jìn)行,引用變量可以任意引用相關(guān)的對(duì)象(賦值)或不引用(null)。因而,在弄清楚道理所含的游戲規(guī)則之后即達(dá)到理解的統(tǒng)一、簡(jiǎn)化與漸變引用即對(duì)象引用對(duì)象對(duì)象。2、常量所謂常量,就是值不允許被改變的量。如果要定義一個(gè)常量,就必須用關(guān)鍵字final修飾,定義常量的具體方式如下: final 常量類型 常量標(biāo)識(shí)符; 例如:
47、60;final float pai=3.14f; / 定義一個(gè)float型常量在定義常量時(shí),通常情況下立即為其賦值,即立即對(duì)常量進(jìn)行初始化。3、變量所謂變量,就是值可以被改變的量。定義變量的具體方式如下:變量類型 變量標(biāo)識(shí)符;例如:string name;/ 定義string型變量int partymemberage ;/ 定義int型變量在定義變量時(shí),可以立即為其賦值,即立即對(duì)變量進(jìn)行初始化,具體語(yǔ)法如下:變量類型 變量標(biāo)識(shí)符 = 變量值;例如:int partymemberage = 26;/ 定義一個(gè)int型變量float money = 3150;/ 定義float類型變量4、常數(shù)程
48、序中直接寫出的數(shù)值,就是常數(shù),也統(tǒng)稱文字。由于常數(shù)的類型需要編譯器根據(jù)語(yǔ)法來(lái)推斷,所以有時(shí)候需要使用特殊的類型符號(hào)來(lái)強(qiáng)制說(shuō)明,具體例子見(jiàn)后面各種基本類型中的舉例。3.2.2 整型整數(shù)類型byte, short, int, long在java編程語(yǔ)言中有四種整數(shù)類型,每種類型可使用關(guān)鍵字byte、short、int和long中的任意一個(gè)進(jìn)行定義。整數(shù)類型的文字可使用十進(jìn)制、八進(jìn)制和16進(jìn)制表示,如下所示:2 十進(jìn)制值是2077 首位的0表示這是一個(gè)八進(jìn)制的數(shù)值0xbaac 首位的0x表示這是一個(gè)16進(jìn)制的數(shù)值整數(shù)類文字屬int類型,除非在其后直接跟著一個(gè)字母“l(fā)”。l表示一個(gè)long值。請(qǐng)注意,
49、在java編程語(yǔ)言中使用大寫或小寫l同樣都是有效的,但由于小寫l與數(shù)字1容易混淆,因而,使用小寫不是一個(gè)明智的選擇。上述文字的long的形式如下:2l 十進(jìn)制值是2,是一個(gè)long077l 首位的0表示這是一個(gè)八進(jìn)制的數(shù)值0xbaacl 前綴0x表示這是一個(gè)16進(jìn)制的數(shù)值四個(gè)整數(shù)類型的長(zhǎng)度和范圍如表2-2所示。表示范圍是按java編程語(yǔ)言規(guī)范定義的且不依賴于平臺(tái)。 表3-2 整數(shù)數(shù)據(jù)類型范圍integer lengthname or typerange8 bitsbyte-2 7 . 2 7 -116 bitsshort-2 15 . 2 15 -132 bitint-2 31 . 2 31
50、-164 bitslong-2 63 . 2 63 -13.2.3 浮點(diǎn)型浮點(diǎn)float和double浮點(diǎn)變量可用關(guān)鍵字float或double來(lái)定義,下面是浮點(diǎn)數(shù)的示例。如果一個(gè)數(shù)字文字包括小數(shù)點(diǎn)或指數(shù)部分,或者在數(shù)字后帶有字母f或f(float)、d或d(double),則該數(shù)字文字為浮點(diǎn)。14 一個(gè)簡(jiǎn)單的浮點(diǎn)值(a double)02e23 一個(gè)大浮點(diǎn)值2.718f 一個(gè)簡(jiǎn)單的float長(zhǎng)度值123.4e+306d 一個(gè)大的帶冗余d的double值float為32位, double 為64位。注意浮點(diǎn)文字除非明確定義為float,否則為double。3.2.4 邏輯型邏輯類型boolea
51、n邏輯值有兩種狀態(tài),即人們經(jīng)常使用的“on”和“off” 或“true”和“false”或“yes”和“no”,這樣的值是用boolean類型來(lái)表示的。java語(yǔ)言中,boolean類型有兩個(gè)文字值,即true和false。以下是一個(gè)有關(guān)boolean類型變量的定義和初始化:boolean flag = true; 3.2.5 字符型字符類型僅有char一個(gè),但經(jīng)常使用字符串類string(具體內(nèi)容在下一章)的文字。使用char類型可表示單個(gè)字符。一個(gè)char代表一個(gè)16-bit無(wú)符號(hào)的(不分正負(fù)的)unicode字符。一個(gè)char文字必須包含在單引號(hào)內(nèi)()。at 一個(gè)制表符u? 一個(gè)特殊的u
52、nicode字符。?應(yīng)嚴(yán)格按照四個(gè)16進(jìn)制數(shù)字進(jìn)行替換string的文字應(yīng)用雙引號(hào)封閉,如下所示:“the quick brown fox jumped over the lazy dog.”string不是原始類型,而是一個(gè)類(class),它被用來(lái)表示字符序列。字符本身符合unicode標(biāo)準(zhǔn),且上述char類型的反斜線符號(hào)適用于string。與c和c+不同,string不是用 0作為結(jié)束的,string類型變量的內(nèi)容也是不可更改的(實(shí)際上是程序員無(wú)法更改的)。char和string類型變量的定義和初始化如下所示: char ch = a' char ch1,ch2 ;
53、string greeting = "good morning ! n" ; string err_msg = "record not found !" ; string str1,str2 ;3.3 運(yùn)算符與表達(dá)式l java的運(yùn)算符基本上與c+的一致。l 合理記住相關(guān)的優(yōu)先級(jí),不要忘記萬(wàn)能()的作用。l 用加號(hào)(+)進(jìn)行串連接。即使不是串也自動(dòng)轉(zhuǎn)換成串。l 強(qiáng)制類型轉(zhuǎn)換在某些時(shí)候是必需的。l 類型的自動(dòng)升級(jí)和表達(dá)式的類型轉(zhuǎn)換3.3.1 算術(shù)運(yùn)算符運(yùn)算符功能舉例運(yùn)算結(jié)果結(jié)果類型+加法運(yùn)算10 + 7.517.5double-減法運(yùn)算107.5f2.5ffloat-一元取負(fù)運(yùn)算-x原類型*乘法運(yùn)算3 * 721int/除法運(yùn)算21 / 3l7llong%求余運(yùn)算10 % 31int+自增運(yùn)算+x原變量-自減運(yùn)算-x
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 散裝行業(yè)話務(wù)員工作總結(jié)
- 2025-2030全球IP66工業(yè)平板電腦行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)1,1,1,2,3,3,3-七氟丙烷行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)可移動(dòng)游泳池地板行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球噴丸研磨石行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)超聲波和熱熔嵌件行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球振動(dòng)供料系統(tǒng)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)晶圓旋轉(zhuǎn)清洗機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)振動(dòng)脫油機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)藝術(shù)品和古董搬運(yùn)服務(wù)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 人教版2024-2025學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期末壓軸題練習(xí)
- 【人教版化學(xué)】必修1 知識(shí)點(diǎn)默寫小紙條(答案背誦版)
- 江蘇省無(wú)錫市2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試題(原卷版)
- 全國(guó)第三屆職業(yè)技能大賽(無(wú)人機(jī)駕駛(植保)項(xiàng)目)選拔賽理論考試題庫(kù)(含答案)
- 《奧特萊斯業(yè)態(tài)淺析》課件
- 2022年湖南省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 國(guó)家安全教育課程教學(xué)大綱分享
- 養(yǎng)殖場(chǎng)獸醫(yī)服務(wù)合同
- 電氣工程及其自動(dòng)化基礎(chǔ)知識(shí)單選題100道及答案解析
- HR六大板塊+三支柱體系
評(píng)論
0/150
提交評(píng)論