新Java教程1~5_第1頁
新Java教程1~5_第2頁
新Java教程1~5_第3頁
新Java教程1~5_第4頁
新Java教程1~5_第5頁
已閱讀5頁,還剩41頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第1章 java語言概述與面向對象思想11.1 java語言的發展11.1.1 java語言的產生11.1.2 java語言的發展11.2 java語言的特點21.3 面向對象與面向過程的差異31.3.1 面向過程思想回顧41.3.2 面向對象思想介紹41.4 面向對象程序設計中的主要概念和特征41.4.1 主要概念51.4.2 主要特征5*1.5 java與c+的差異51.6本章小結5習題5第2章 java語言開發環境62.1 jdk62.1.1 jdk的簡介62.1.2 jdk的構成62.1.3 jdk的使用62.2 ide92.2.1 ide簡介92.2.2 jbuilder92.2.3

2、 eclipse92.2.4 相關資源92.3 project管理92.3.1 project的含義92.3.2 可行的project組織模式92.3.3 主要開發工具的project目錄102.4 本章小結10習題10第3章 java語言基礎113.1 標識符和關鍵字113.1.1 分號、塊和空白113.1.2 標識符113.1.3 關鍵字113.2 常數、常量、變量與基本數據類型123.2.1 數據類型體系以及基本概念123.2.2 整型133.2.3 浮點型143.2.4 邏輯型143.2.5 字符型143.3 運算符與表達式143.3.1 算術運算符153.3.2 關系運算符153.3

3、.3 邏輯運算符153.3.4 賦值運算符153.3.5 位運算符153.3.6 特殊運算符163.3.7 運算符的優先級163.4 基本數據類型轉換163.5 流程控制173.5.1分支結構173.5.2循環結構173.6本章小結19習題19第4章 數組和字符串204.1數組204.1.1 一維數組204.1.2 多維數組214.1.3 數組屬性與方法224.2 字符串224.4.1 字符串類224.4.2 字符串類的常用方法234.4.3 字符串運算與轉換234.3 stringbuffer234.4本章小結24習題24第5章 java面向對象程序設計255.1 類與對象255.1.1 類

4、的定義255.1.2 方法265.1.3 構造方法與對象創建265.1.4 類的封裝275.2 繼承285.2.1 繼承的概念285.2.2 子類的定義語法285.2.3 子類對象構造過程295.2.4 訪問控制和特殊的對象訪問引用符號295.2.5 變量隱藏和方法覆蓋305.2.6 多態305.3 特殊修飾控制符305.3.1 static305.3.2 final315.3.3 abstract315.4 對象的生命周期315.5 object類325.6抽象類和接口325.6.1抽象類325.6.2 接口325.7 內部類335.7.1 內部類的作用335.7.2 內部類的定義和使用33

5、5.7.3 匿名內部類335.8 類的編組包335.8.1 包的含義335.8.2 import語句335.8.3 classpath環境變量345.9本章小結34習題類的設計35習題類的使用練習36習題綜合練習36第六章 實用類與類的設計406.1串分解類406.2正則式406.3.1 正則式的語法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 類的設計416.5.1 類的分類416.5.2 類的設

6、計原則416.5.3 類圖416.5.4 單類設計416.5.5 多類設計416.6本章小結41習題分析設計問題41習題重構練習41第7章 java的異常處理427.1 異常的概念427.2 異常處理語法427.2.1 java的異常處理機制427.2.2 異常的產生與拋出437.2.1 異常的捕獲437.3 自定義異常類447.4本章小結44習題44第8 章 i/o流458.1流的概述458.2 file類458.3 字節流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 其他數據流(根據情況添加內容)458.7.1 datainputsteam458.7.2 dataoutptsream45*8.8字符集處理458.8.1 字符集概述458.8.2 java中字符集的處理方法458.9本章小結45習題45第9章 多線程459.1 多線程機制459.1.1 基本概念459.1.2 線程的狀態459.2 線程類和線程接口(包含簡單實例)459.2.1 線程基類459.2.2 線程接口45*9.2.3 線程組459.3 線程的同

8、步與通信459.3.1 線程同步469.3.2 線程通信469.4 線程設計(實際問題)469.4.1 基本需求469.4.2 設計方案469.5本章小結46習題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事件處理機制4610.3.1 java事件基本概念4610.3.2 java事件處理機制4610.3.3 適配器類4610.4 其他常用組件4610.4.1 標簽4610.4.2 按鈕4610.4.3選擇

9、框(單選和復選)4610.4.4文本框4610.4.5 列表框4610.4.6對話框4610.4.7 菜單4610.5本章小結46習題46第11章 網絡編程4611.1 網絡編程基礎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本章小結47習題47第12章 數據庫編程4712.1 jdbc

10、技術簡介4712.1.1 jdbc概述4712.1.2 jdbc編程接口4712.2 基本jdbc編程4712.2.1 連接4712.2.2查詢4712.2.3 更新4712.2.4 事務4712.3 本章小結47習題47第13章 編程實例4713.1 基本需求描述4713.2 問題領域的架構抽象4713.3 計算機化的架構設計4713.4本章小結47習題47參考文獻48第1章 java語言概述與面向對象思想1.1 java語言的發展1.1.1 java語言的產生上世紀90年代初期,sun公司在研究一種適用于未來的智能設備的編程語言,該語言要具有一些新的特性,以避免c+的一些不足。該語言起初命

11、名為oak,來源于語言作者gosling辦公室窗外的一棵橡樹(oak)。后來在注冊時候遇到了沖突,于是就從手中的熱咖啡聯想到了印度尼西亞一個盛產咖啡的島嶼,中文名叫爪哇,java語言得名于此。隨著internet的迅速發展,web應用日益廣泛,java語言也得到了迅速發展。1994年,gosling用java開發了一個實時性較高、可靠、安全、有交互功能的新型web瀏覽器,它不依賴于任何硬件平臺和軟件平臺。這種瀏覽器名稱為hotjava,并于1995年同java語言一起,正式在業界對外發表,引起了巨大的轟動,java的地位隨之而得到肯定。此后的發展非常迅速。java編程語言的句法與c+的句法相似

12、,語義則與small talk tm的語義相似。java編程語言可被用來創建任何常規編程語言所能創建的應用程序。設計java編程語言的主要目標是:l 提供一種易于編程的語言,從而消除其它語言在諸如指針運算和存儲器管理方面影響健壯性的缺陷。l 利用面向對象的概念使程序真正地成為完全面向對象的程序。l 為使代碼盡可能清晰合理、簡明流暢提供了一種方法。l 為獲得如下兩點益處提供一種解釋環境:提高開發速度消除編譯鏈接裝載測試周期;代碼可移植性使操作系統能為運行環境做系統級調用。l 為運行不止一個活動線程的程序提供了一種方式。l 通過允許下載代碼模塊,從而當程序運行時也能動態支持程序改變。l 為那些保證

13、安全性而裝載的代碼模塊提供了一種檢查方法。精心開發的java核心技術為上述目標的實現提供了保證,其中包括如下幾個主要技術:l java虛擬機l 自動垃圾收集l 代碼安全性1.1.2 java語言的發展java語言的發展目標并不僅僅是一種編程語言,同時還要構建一種開發環境、一種應用環境、一種部署環境。作為java語言的最基本支持,sun公司在1996年發布了java開發工具包jdk 1.0(jdk是java develop kit的簡稱),其中包括了進行java開發所需要的各種實用程序(編譯、執行、文檔生成器等等)、基本類庫(相當于c語言的函數庫以及c+的類庫)、程序實例等等。1998年,sun

14、公司發布了更新的jdk 1.2,由于在技術思想方面與以前有很多改進,所以此后的java技術一般稱之為java 2。隨后,針對不同的領域特征,java技術分為三種不同的平臺(最新的稱謂又去掉了意義模糊的2,如javase):l j2se標準java平臺j2se是java語言的標準版,指的就是jdk(1.2及其以后版本),包含java基礎類庫和語法。它用于開發具有豐富的gui(圖形用戶界面)、復雜邏輯和高性能的桌面應用程序。l j2ee企業級java平臺j2ee建立在j2se之上,用于開發和實施企業級應用程序。它是一個標準的多層體系結構,可以將企業級應用程序劃分為客戶層、表示層、業務層和數據層,主

15、要用于開發和部署分布式、基于組件、安全可靠、可伸縮和易于管理的企業級應用程序。l j2me嵌入式java技術平臺j2me也是建立在j2se之上,主要用于開發具有有限的連接、內存和用戶界面能力的設備應用程序。例如移動電話(手機)、pda(電子商務)、能夠接入電纜服務的機頂盒或者各種終端和其他消費電子產品。任何語言建立的應用程序的類型或多或少都與應用程序的運行環境有關,而java語言一般可以建立如下的兩種程序:l applicationsapplications是一種獨立的程序,它是一種典型的通用程序,可運行于任何具備java運行環境的設備中。l appletsapplets是一種貯存于www服務

16、器上的用java編程語言編寫的程序,它通常由瀏覽器下載到客戶系統中,并通過瀏覽器運行。applets通常較小,以減少下載時間,它由超文本標識語言(html)的web頁來調用。java運行環境具有一些特殊性,或者有很多特殊的人為建立的運行環境,所以java編程中經常建立各種組件,它們可以在特定環境中運行,如servlet、javabean、jsp等。在java技術體系中,有很多免費或非免費的第三方java組件,他們往往提供了某一方面的解決方案,可以應用在很多項目的開發過程中。學習java語言需要逐漸了解java技術體系,從局部細節開始學習,從整體中進行認識并選擇方向,從應用中進行鞏固提高。1.2

17、 java語言的特點java語言適用于internet環境,是一種被廣泛使用的網絡編程語言,它具有如下的一些特點:l 簡單java語言的語法規則和c+類似,但java語言取消了指針和多重繼承,統一使用引用來指示對象(c+中有兩種形式,實際上是兩種產生對象的途徑,而java中只有一種),通過自動垃圾收集免去了程序設計人員對于內存塊的釋放工作。l 面向對象(近于完全)java語言為了提高效率,定義了幾個基本的數據類型以非類的方式實現,余下的所有數據類型都以類的形式進行封裝,程序系統的構成單位也是類。因而幾乎可以認為是完全面向對象。l 平臺無關性(可移植、跨平臺)java虛擬機(jvm)是在各種體系

18、結構真實機器中用軟件模擬實現的一種想象機器,必要時候可以用硬件實現。當然,這些虛擬機內部實現各異,但其功能是一致的執行統一的java虛擬機指令。java編譯器將java 應用程序的源代碼文件(.java)翻譯成java字節碼文件(.class),它是由java虛擬機指令構成的。由于是虛擬機器,因而java虛擬機執行java程序的過程一般稱為解釋。依賴于虛擬機技術,java語言具有與機器體系結構無關的特性,即java程序一旦編寫好之后,不需進行修改就可以移植到任何一臺體系結構不同的機器上。從操作系統的角度看,執行一次java程序的過程就是執行一次java 虛擬機進程的過程。l 面向網絡編程jav

19、a語言產生之初就面向網絡,在jdk中包括了支持tcp/ip、http和ftp等協議的類庫。l 多線程支持多線程是程序同時執行多個任務的一種功能。多線程機制能夠使應用程序并行執行多項任務,其同步機制保證了各線程對共享數據的正確操作。l 良好的代碼安全性運行時(runtime)一詞強調以動態的角度看程序,研究程序運行時候的動態變化,也用運行時環境一詞表達類似的含義。java技術的很多工作是在運行時完成的,如加強代碼安全性的校驗操作。一般地,java技術的運行環境執行如下三大任務:l 加載代碼由類加載器執行類加載器為程序的執行加載所需要的全部類(盡可能而未必同時)。l 校驗代碼由字節碼校驗器執行ja

20、va代碼在實際運行之前要經過幾次測試。字節碼校驗器對程序代碼進行四遍校驗,這可以保證代碼符合jvm規范并且不破壞系統的完整性。如檢查偽造指針、違反對象訪問權限或試圖改變對象類型的非法代碼。l 執行代碼由運行時的解釋器執行l 自動垃圾收集許多編程語言都允許在程序運行時動態分配內存塊,分配內存塊的過程由于語言句法不同而有所變化,但總是要返回指向存儲區起始位置的指針。在c,c+ 及其它一些語言中,程序員負責取消分配內存塊。有時這是一件很困難的事情。因為程序員并不總是事先知道內存塊應在何時被釋放。當在系統中沒有能夠被分配的內存塊時,可導致程序癱瘓,這種程序被稱作具有內存漏洞。當分配內存塊不再需要時,程

21、序或運行環境應取消分配內存塊。l 垃圾收集就是將不再需要的已分配內存塊回收。l 在其它一般的語言中,取消分配是程序員的責任。l java編程語言提供了一種系統級線程以跟蹤存儲區分配,來完成垃圾收集:n 可檢查和釋放不再需要的存儲塊n 可自動完成上述工作n 可在jvm實現周期中,產生意想不到的變化l 良好的代碼健壯性java能夠檢查程序在編譯和運行時的錯誤。類型檢查能幫助用戶檢查出許多在開發早期出現的錯誤。同時很多集成開發工具(ide)的出現使編譯和運行java程序更加容易,并且很多集成開發工具(如eclipse)都是免費的。1.3 面向對象與面向過程的差異一種程序設計語言的產生,不僅是程序設計

22、技術的改進,也包含了表達和認知思想的進步。以c語言為代表的部分早期語言,被稱為面向過程的語言,不僅因為其程序設計的表達形式是以過程為基本元素,本質上更在于此時對計算機化的系統的理解的主導思想還是控制流或者數據流的,構成系統的要素是模塊處理邏輯。面向對象語言的產生,是因為對于系統的理解或抽象到了更為高級的層次。此時的認知思想不僅更接近于現實世界,其抽象程度也很高。因而,既有易懂的一方面,也有難懂的另一方面,就看理解的境界了。1.3.1 面向過程思想回顧面向過程思想和程序設計語言的體現,可以簡單總結為以下幾條:對系統的認識采用結構化分析的過程自頂向下,逐步求精地進行功能分解;每個功能就是處理數據的

23、一個模塊,因而ipo描述充分刻畫了模塊的內外特征;每個模塊都是控制流的,因而有典型的三種程序結構順序、分支、循環;模塊間的關系通過調用維系,因而模塊成為了函數,這也是面向過程方式下最主要的代碼重用方式;盡管函數調用有參數和返回值,但數據總是和函數分開的,不僅有了著名的斷言程序=算法+數據,也使得絕對平等產生了無序的麻煩所有的函數和數據的關聯關系沒有限制;如果要使用數據流,那么只能是在數據產生之后的適當時機調用函數。這一時期的主要缺點是:對系統的理解比較難,系統地開發效率低,代碼的可重用性差。1.3.2 面向對象思想介紹面向對象思想,對現實世界采用直觀的理解,計算機化時候采用深度的抽象,簡單地可

24、以總結如下:系統是由事物構成的,事物之間是有聯系的,復雜的事物也是系統;系統與系統、系統與事物、事物與事物之間是有明確界限(邊界)的;系統或事物的狀態刻畫可以用屬性表示,屬性一般是些簡單的數據,如果復雜那就是事物了;系統或事物的狀態會發生變化,稱為行為,產生變化是有原因的(內部的或外部的),變化的過程可能是復雜的;不同的事物之間會具有共同的屬性和行為,共同的極端情形就是完全包含。基于以上的認識,一個運行時(動態)的具體系統或事物,是由幾個更小的具體事物構成(極端的事物就是一個簡單的屬性數據),它們是不斷發生變化的。如果對事物這一概念進行了有效的抽象,那么問題就迎刃而解。首先,將任何一個具體的事

25、物稱為對象(object),它的極端情形就是過去的變量;事物是分類的,每一類事物都具有統一的屬性和行為,即類型抽象數據類型,簡稱為類(class);行為既然是過程,那么就抽象成函數,命名為方法,以示區別。例如:描述身高或姓名,各自只是一個簡單的數據變量;描述一個學生,可以使用學號、姓名、宿舍、班級等;那更換宿舍算什么呢!那描述宿舍、班級,又要有許多個項目。1.4 面向對象程序設計中的主要概念和特征面向對象程序設計(object oriented programming,oop)語言中,為了進行更為高度的抽象,會引入一些現實世界中難于找到的概念,但對于一個程序語言來說確實很有價值的。以下暫時介紹

26、的概念基本上都來源于對現實世界的抽象,要從程序設計的角色中去理解它們。面向對象程序設計使系統更易于理解,也使代碼具有更好的重用性、可擴展性、易于管理和維護。1.4.1 主要概念1、類類是對一類事物的抽象表示,其角色就相當于數據類型,當然可以算作復雜的數據類型。如學生、宿舍、班級。2、對象對象表示一個具體的事物,其角色就是變量,即一個復雜數據類型xx類的變量。如周瑜、張飛、瑜飛居,飛虎班。3、成員一個事物的構成元素,討論類的時候就是虛擬的,討論對象的時候就是具體的。如在類中,一個變量屬于成員成員變量,一個對象也屬于成員成員對象,一個函數也屬于成員成員方法。1.4.2 主要特征oop語言有三個特征

27、:封裝、繼承及多態性。1、封裝類的構成包括成員變量/對象與成員方法,這樣將相關的數據與函數包裝在一起,同其他的類相區分,就是封裝。顯然,避免了面向過程語言的平行缺陷,說明了類和成員之間的所屬關系。進一步地,可以限制類的成員在外部的可見性,那么就將封裝體現得更完美。2、繼承當一種事物甲完全是另一種事物乙的特例,那么,一般地,類甲只是比類乙多出一些成員變量/對象與成員方法,稱為類甲繼承類乙,類甲稱為(類乙的)子類,類乙稱為(類甲的)父類。父類也稱為基類、超類,子類也稱為導出類、派生類。顯然編寫子類就沒有必要重復書寫父類中乙有的代碼部分,這是oop中最典型的代碼重用。3、多態多態表示一個類的某種行為

28、存在多種實現版本。簡單的情況是在一個類中,給出多種不同的實現,復雜的情況是在多個子類中各自給出不同的實現。*1.5 java與c+的差異1.6本章小結習題1解釋java語言的三種平臺。2解釋支撐java語言目標的三種主要技術(自查資料完善)。3關于面向對象與面向過程的不同,從問題理解和問題表示兩種角度,按照個人的理解和認識,例示其不同的地方。第2章 java語言開發環境2.1 jdk2.1.1 jdk的簡介可以從sun公司的官方網站()上下載java開發工具包(jdk)。不必要求最新的版本,注意java se、windows平臺等信息。如:jdk-1_5_0_17-windows-i586-p

29、.exe2.1.2 jdk的構成2.1.3 jdk的使用1、安裝過程簡單,基本使用默認設置,注意安裝目錄(最好簡單化)。2、設置環境變量環境變量應用程序運行時候需要的一些相對固定值的參數。例如,java開發工具等軟件需要使用jdk,那么必須知道jdk在系統中的什么位置,于是大家約定在操作系統中定義一個名稱為java_home的環境變量,其內容表示jdk的安裝目錄。在win2000/2003中的方法:操作【我的電腦】【屬性】【高級】【環境變量】后,在【系統變量】區域進行新建、編輯等操作即可。java_home必設的環境變量,表示jdk安裝目錄(如c:javajdk1.5.0_17)。(第一次是新

30、建)path名稱程序查找路徑。如果需要在命令行方式下使用java的話,修改其內容,在前面增加jdk命令目錄,不同項目中間使用分號分隔。(修改,增加%java_home%bin)classpath類庫設置。(新建,.; c:javajdk1.5.0_17 libtools.jar)。3、使用l 創建程序可以使用最簡單的文本編輯器,編寫如下的程序,保存的名字必須是hello.java。package chap01; /當前類所屬包名稱public class hello /當前類名 public static void main(string args) /應用程序的主函數 system.out.

31、println("hello, 我的第一個java應用程序!"); /輸出函數 l 程序內容解釋在以上的程序中,必須了解并逐漸熟悉的關鍵點:n 聲明包名chap01,指明類的位置(所屬包)、相當于文件夾名稱,用途在于方便類的組織和管理;n 聲明類名hello,與程序文件名相同(指必須的public類);n 類屬性public,描述類的可見性,即類和其它類、包的關系;n 主函數main,程序入口(僅applications類型需要);n 主函數屬性public static,公有、靜態(特殊的函數);n 主函數的參數string args,命令行參數(如果執行程序時候給了參數

32、,將會由系統封裝成字符串數組傳遞到這里,程序內部可以從此獲得并處理);n 輸出函數這是java類庫中提供的一個在標準輸出設備(顯示器、字符輸出,對于操作系統來說是可以重定向的設備)顯示文本的函數。注意其中出現的類名稱system、成員對象名稱out、成員方法名稱println,書寫語法以及參數。從幫助中可以方便地查找到函數的參數語法;n 整個類的框架括號等表達的結構。n 注釋格式/表示行注釋,本行后面的內容為注釋;/*/表示塊注釋,其中的內容為注釋。以上的內容在一個java應用程序中幾乎是必需的。l 典型源文件布局一個java源文件可包含三個“頂級”要素:n 一個包聲明(可選,沒有表示頂級包,

33、但有點麻煩);n 任意數量的導入語句import,表示將要使用的外部java類;n 類和接口聲明。該三要素必須以上述順序出現。即,任何導入語句出現在所有類定義之前;如果使用包聲明,則包聲明必須出現在類和導入語句之前。如果需要或者說是遵循編程規范,那么在文件開頭可以使用如下形式的文檔注釋:/*文檔信息描述*/這種形式的注釋可以被專門的文檔生成工具所處理(由javadoc命令生成的html文件)。l 程序編譯如下圖中的命令javac hello.java。注意編譯后的文件變化。l 程序運行如下圖中的命令java chap01.hello。l 命令窗口與簡單命令解釋有多種形式打開如下的命令窗口,注意

34、其中常見的命令的含義以及其成功執行的前提。一條命令一般由 命令動詞+空格+參數 構成,并以回車結束。命令動詞中如果不包含路徑那么將從默認的路徑中查找命令程序,命令可能的參數內容以及形式取決于程序本身,如果需要,可以使用諸如 java -? 或 java help 形式獲得。d:切換當前分區;cd切換當前某分區下的工作文件夾,需要參數;md創建新的文件夾,需要參數;copy拷貝文件;2.2 ide2.2.1 ide簡介ide的含義是java集成開發環境(integrated development environment,ide)。有很多ide可供選擇,典型的如jbuilder、eclipse等

35、。2.2.2 jbuilderjbuilder是使用java開發的,支持j2ee技術的java集成開發環境。但jbuilder不是完全免費的。jbuilder的安裝程序存放在機器中的c:javajbx中,兩個目錄相當于兩張光盤,安裝時候當出現安裝項目列表時候只選第一個即可,安裝后的處理按照其中的說明文件進行,解密環節或許需要執行若干次。最好先安裝jdk。如果出現解密命令失敗,一般是path環境變量設置問題。2.2.3 eclipseeclipse是基于java的,開放源碼的、可擴展的應用開發平臺,它為編程人員提供了一流的java集成開發環境(integrated development env

36、ironment,ide)。是一個可以用于構建集成web和應用程序的開發工具平臺,其本身并不會提供大量的功能,而是通過插件來實現程序的快速開發功能。eclipse是一個成熟的可擴展的體系結構。它為創建可擴展的開發環境提供了一個平臺。這個平臺允許任何人構建與環境或其他工具無縫集成的工具,而工具與eclipse無縫集成的關鍵是插件。eclipse還包括插件開發環境(pde),pde主要針對那些希望擴展eclipse的編程人員而設定的。這也正是eclipse最具魅力的地方。通過不斷的集成各種插件,eclipse的功能也在不斷的擴展,以便支持各種不同的應用。雖然eclipse是針對java語言而設計開

37、發的,但是它的用途并不局限于java語言,通過安裝不同的插件eclipse還可以支持諸如c/c+、php、cobol等編程語言。eclipse利用java語言寫成,所以eclipse可以支持跨平臺操作,但是需要swt(standard widget toolkit)的支持,不過這已經不是什么大問題了,因為swt已經被移植到許多常見的平臺上,例如windows、linux、solaris等多個操作系統,甚至可以應用到手機或者pda程序開發中。2.2.4 相關資源需要關注各家公司的官網、以及對應中文網站。還有如這樣的綜合性技術網站。2.3 project管理2.3.1 project的含義proj

38、ect即項目或工程,幾乎所有的ide,使用時候必須先建立project,才可以創建程序、編譯程序、運行程序、修改程序、調試程序。如果有一種非常理想和完善的ide工具,那么它可以管理一個project的所有文檔資源和生命周期。最好是從軟件工程的角度去思考和理解project。2.3.2 可行的project組織模式學習程序設計語言,首先要學會管理自己的代碼資源,使用合理的組織方式。影響實際項目開發中的工程組織方式有多種因素:軟件生命周期的不同階段、項目的功能結構、項目關聯人員角色、文檔分類等。在本書的學習中,建議每章組織為一個工程,章內所有例子、習題以及自己創建的程序能夠分門別類(文件夾=包)進

39、行組織。平時管理好自己的勞動成果,要有代碼資源的積累。2.3.3 主要開發工具的project目錄2.4 本章小結習題1. 建立一個總結文檔,分章節記錄以后學習實踐過程中的一些關鍵的操作過程和技巧、問題的解決方法、總結等。以便以后查閱。2練習jdk的安裝、編譯并執行hello或自己編寫的應用程序。3改造hello程序,自定義三個整型變量a、b、c并賦值,然后適當地處理保證a最大、c最小,再按從大到小順序輸出。編程時候主函數的代碼中,除了輸出函數之外,其它可以按照c語言的語法進行。4. 安裝jbuilder,嘗試創建工程、建立程序、編譯、運行、修改、調試。此過程中,關注其中的少量主菜單(文件、工

40、程、運行)中的主要功能。4. 查閱jbuilder幫助,通過system類最終找到輸出函數print系列適當閱讀。第3章 java語言基礎3.1 標識符和關鍵字3.1.1 分號、塊和空白在java編程語言中,語句是由分號(;)終止的代碼,一條語句可占多行。一個塊(block)或一個復合語句是以上括號和下括號()為邊界的語句集合;函數體、類體也是塊。塊語句可以嵌套。3.1.2 標識符在java編程語言中,標識符是賦予變量、類或方法的名稱。標識符可從一個字母、下劃線(_)或美元符號($)開始,隨后也可跟數字。標識符是大小寫區別對待的并且未規定最大長度。有效標識符如下:identifierusern

41、ameuser_name_sys_varl$changejava源程序采用有效的16-bit 雙字節字符編碼標準(unicode) ,而不是8-bit ascii文本。因而,一個字母有著更廣泛的定義,而不僅僅是a到z和a到z。謹慎對待非ascii字符,因為unicode可支持看似相同而實際不同的字符。標識符不能是關鍵字,但是它可包含一個關鍵字作為它的名字的一部分。例如,thisone是一個有效標識符,但this卻不是,因為this是一個java關鍵字。3.1.3 關鍵字表3-1 java編程語言中的關鍵字abstractdoimplementsprivatethrowbooleandouble

42、importprotectedthrowsbreakelseinstanceofpublictransientbyteextendsintreturntruecasefalseinterfaceshorttrycatchfinallongstaticvoidcharfinallynativesupervolatileclassfloatnewswitchwhilecontinuefornullsynchronizeddefaultifpackagethis關鍵字對java技術編譯器有特殊的含義,它們可標識數據類型名或程序構造(construct)名。以下是有關關鍵字的重要注意事項:l true

43、、false和null為小寫,而不是象在c+語言中那樣為大寫。嚴格地講,它們不是關鍵字,而是文字。然而,這種區別是理論上的。l 無sizeof運算符;所有類型的長度和表示是固定的,不依賴執行機器環境。l 沒有goto和const字。3.2 常數、常量、變量與基本數據類型3.2.1 數據類型體系以及基本概念1、java基本數據類型體系java編程語言定義了八個原始數據類型(非類類型)和一種特殊類型(類類型)。原始類型可分為四種:l 邏輯類型 booleanl 字符類型 char l 整數類型 byte、short、int、longl 浮點類型 double、float它們都是非引用類型其變量就是

44、內存單元、內存單元存儲的就是數據。示例如下:一個特定長度的內存單元,其中存放一個特定編碼格式的數據,高級語言中為了方便使用和描述,賦予它一個特定的符號名稱,如 x=3;0000 0003hvoid不再作為類型出現,僅在表示函數沒有返回值的時候使用。作為面向對象語言,支持復雜的數據類型抽象抽象數據類型,因而所有不能使用原始數據類型表達的問題都使用抽象數據類型。為了統一抽象機制,java語言中建立了一個object類,作為java語言中所有類的基類,其中定義了一些重要的方法和屬性。另外,java的對象統一使用new操作符在內存堆中動態創建,沒有了c+的全局對象或堆棧對象的建立方式,只對應

45、其對象指針方式。c+的對象定義語法如下:student s; /自動在全局數據區中建立一個對象或函數的棧空間中建立一個對象,程序中賦予特定的符號名字以求方便,程序員不需要考慮空間歸還問題。student* sp = new student(); /在內存堆中動態創建一個對象,sp指向它,程序員必需在適當時候使用delete sp進行空間歸還。一個特定長度的內存單元,其中存放一個特定對象的引用,高級語言中為了方便使用和描述,賦予它一個特定的符號名稱,如sp。java放棄了第一種方式,因而語法上可以統一取消*符號,形如sp的角色便有了新的名字引用變量變量也是內存單元,但其內容是地址,無值為null

46、,有值為類的實例對象的地址,指向對象。關系如下:一個特定類的實例對象,存放在堆中,為了有效的內存管理機制,高級語言中不賦予名字,無法直接訪問。堆中實際給學生對象分配的空間學生對象的地址及其封裝引用變量和對象之間的這種關系,使得語法上訪問對象必須通過引用變量進行,引用變量可以任意引用相關的對象(賦值)或不引用(null)。因而,在弄清楚道理所含的游戲規則之后即達到理解的統一、簡化與漸變引用即對象引用對象對象。2、常量所謂常量,就是值不允許被改變的量。如果要定義一個常量,就必須用關鍵字final修飾,定義常量的具體方式如下: final 常量類型 常量標識符; 例如: 

47、;final float pai=3.14f; / 定義一個float型常量在定義常量時,通常情況下立即為其賦值,即立即對常量進行初始化。3、變量所謂變量,就是值可以被改變的量。定義變量的具體方式如下:變量類型 變量標識符;例如:string name;/ 定義string型變量int partymemberage ;/ 定義int型變量在定義變量時,可以立即為其賦值,即立即對變量進行初始化,具體語法如下:變量類型 變量標識符 = 變量值;例如:int partymemberage = 26;/ 定義一個int型變量float money = 3150;/ 定義float類型變量4、常數程序中

48、直接寫出的數值,就是常數,也統稱文字。由于常數的類型需要編譯器根據語法來推斷,所以有時候需要使用特殊的類型符號來強制說明,具體例子見后面各種基本類型中的舉例。3.2.2 整型整數類型byte, short, int, long在java編程語言中有四種整數類型,每種類型可使用關鍵字byte、short、int和long中的任意一個進行定義。整數類型的文字可使用十進制、八進制和16進制表示,如下所示:2 十進制值是2077 首位的0表示這是一個八進制的數值0xbaac 首位的0x表示這是一個16進制的數值整數類文字屬int類型,除非在其后直接跟著一個字母“l”。l表示一個long值。請注意,在j

49、ava編程語言中使用大寫或小寫l同樣都是有效的,但由于小寫l與數字1容易混淆,因而,使用小寫不是一個明智的選擇。上述文字的long的形式如下:2l 十進制值是2,是一個long077l 首位的0表示這是一個八進制的數值0xbaacl 前綴0x表示這是一個16進制的數值四個整數類型的長度和范圍如表2-2所示。表示范圍是按java編程語言規范定義的且不依賴于平臺。 表3-2 整數數據類型范圍integer lengthname or typerange8 bitsbyte-2 7 . 2 7 -116 bitsshort-2 15 . 2 15 -132 bitint-2 31 . 2 31 -1

50、64 bitslong-2 63 . 2 63 -13.2.3 浮點型浮點float和double浮點變量可用關鍵字float或double來定義,下面是浮點數的示例。如果一個數字文字包括小數點或指數部分,或者在數字后帶有字母f或f(float)、d或d(double),則該數字文字為浮點。14 一個簡單的浮點值(a double)02e23 一個大浮點值2.718f 一個簡單的float長度值123.4e+306d 一個大的帶冗余d的double值float為32位, double 為64位。注意浮點文字除非明確定義為float,否則為double。3.2.4 邏輯型邏輯類型boolean邏

51、輯值有兩種狀態,即人們經常使用的“on”和“off” 或“true”和“false”或“yes”和“no”,這樣的值是用boolean類型來表示的。java語言中,boolean類型有兩個文字值,即true和false。以下是一個有關boolean類型變量的定義和初始化:boolean flag = true; 3.2.5 字符型字符類型僅有char一個,但經常使用字符串類string(具體內容在下一章)的文字。使用char類型可表示單個字符。一個char代表一個16-bit無符號的(不分正負的)unicode字符。一個char文字必須包含在單引號內()。at 一個制表符u? 一個特殊的uni

52、code字符。?應嚴格按照四個16進制數字進行替換string的文字應用雙引號封閉,如下所示:“the  quick brown fox jumped over the lazy dog.”string不是原始類型,而是一個類(class),它被用來表示字符序列。字符本身符合unicode標準,且上述char類型的反斜線符號適用于string。與c和c+不同,string不是用 0作為結束的,string類型變量的內容也是不可更改的(實際上是程序員無法更改的)。char和string類型變量的定義和初始化如下所示: char ch = a' char ch1,ch2 ; st

53、ring greeting = "good morning ! n" ; string err_msg = "record not found !" ; string str1,str2 ;3.3 運算符與表達式l java的運算符基本上與c+的一致。l 合理記住相關的優先級,不要忘記萬能()的作用。l 用加號(+)進行串連接。即使不是串也自動轉換成串。l 強制類型轉換在某些時候是必需的。l 類型的自動升級和表達式的類型轉換3.3.1 算術運算符運算符功能舉例運算結果結果類型+加法運算10 + 7.517.5double-減法運算107.5f2.5ffloat-一元取負運算-x原類型*乘法運算3 * 721int/除法運算21 / 3l7llong%求余運算10 % 31int+自增運算+x原變量-自減運算-x原變量3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論