本書重點(diǎn)介紹Java語言的核心語法,程序的流程控制,Java面向?qū)ο蟪绦蛟O(shè)計(jì)的主要內(nèi)容,常用API,JDBC數(shù)據(jù)庫編程等Java程序設(shè)計(jì)的核心基礎(chǔ)內(nèi)容。另外,通過大量的示例向讀者展示Java的編程規(guī)范和編程方法,幫助讀者建立由感性到理性的深入認(rèn)識(shí),特別注重提高讀者運(yùn)用Java語言和面向?qū)ο蠹夹g(shù)解決實(shí)際問題的能力,讀者通過實(shí)踐例題以及完成課后編程習(xí)題,能夠掌握J(rèn)ava編程的基本技巧,為今后進(jìn)一步學(xué)習(xí)運(yùn)用Java語言進(jìn)行各種應(yīng)用的開發(fā)打下堅(jiān)實(shí)的基礎(chǔ)。
適讀人群 :本書適用于高職高專、應(yīng)用型本科、中職等層次學(xué)校的相關(guān)專業(yè)使用,可作為Java初學(xué)者的入門教材和Java相關(guān)課程設(shè)計(jì)教材,也可以作為Java開發(fā)工程師的培訓(xùn)教材,還可以作為企業(yè)崗前培訓(xùn)教材。
本書的目標(biāo)是幫助廣大高職高專學(xué)生學(xué)習(xí)和掌握J(rèn)ava程序設(shè)計(jì)語言的核心基礎(chǔ)知識(shí)和技術(shù)。本書知識(shí)點(diǎn)系統(tǒng)連貫、邏輯性強(qiáng); 重視實(shí)際應(yīng)用,案例豐富;學(xué)習(xí)模塊劃分合理,重難點(diǎn)突出,利于組織教學(xué)。作為一種編程語言和技術(shù)的入門教程,zui難也zui重要的是令一些非常復(fù)雜又難以理解的編程思想和問題簡(jiǎn)單化,令初學(xué)者能盡量輕松理解并快速掌握。本書對(duì)每個(gè)知識(shí)點(diǎn)都進(jìn)行了較詳盡的講解,精心設(shè)計(jì)了相關(guān)的例程,盡量用生動(dòng)形象的案例來講解抽象的編程思想和模擬這些知識(shí)點(diǎn)在實(shí)際工作中的可能運(yùn)用,力求做到知識(shí)由淺入深、由易到難,循序漸進(jìn)地引導(dǎo)學(xué)生和讀者逐步掌握J(rèn)ava程序設(shè)計(jì)的核心基礎(chǔ)知識(shí)和技術(shù)。
Java語言具有簡(jiǎn)單、面向?qū)ο蟆⒎植际、健壯性、安全性、可移植性、多線程、高性能等諸多優(yōu)點(diǎn),是近十年來計(jì)算機(jī)編程語言排行榜上的佼佼者,可以用于開發(fā)各種領(lǐng)域的應(yīng)用軟件。熟練掌握J(rèn)ava語言是軟件從業(yè)人員的必備技能。
本書的目標(biāo)是幫助廣大高職高專學(xué)生學(xué)習(xí)和掌握J(rèn)ava程序設(shè)計(jì)語言的核心基礎(chǔ)知識(shí)和技術(shù)。本書知識(shí)點(diǎn)系統(tǒng)連貫、邏輯性強(qiáng);重視實(shí)際應(yīng)用,案例豐富;學(xué)習(xí)模塊劃分合理,重難點(diǎn)突出,利于組織教學(xué)。作為一種編程語言和技術(shù)的入門教程,最難也最重要的是令一些非常復(fù)雜又難以理解的編程思想和問題簡(jiǎn)單化,令初學(xué)者能盡量輕松理解并快速掌握。本書對(duì)每個(gè)知識(shí)點(diǎn)都進(jìn)行了較詳盡的講解,精心設(shè)計(jì)了相關(guān)的例程,盡量用生動(dòng)形象的案例來講解抽象的編程思想和模擬這些知識(shí)點(diǎn)在實(shí)際工作中的可能運(yùn)用,力求做到知識(shí)由淺入深、由易到難,循序漸進(jìn)地引導(dǎo)學(xué)生和讀者逐步掌握J(rèn)ava程序設(shè)計(jì)的核心基礎(chǔ)知識(shí)和技術(shù)。
本書共包含10個(gè)項(xiàng)目。項(xiàng)目1認(rèn)識(shí)Java語言,介紹計(jì)算機(jī)程序和Java程序設(shè)計(jì)語言的基本情況;項(xiàng)目2開發(fā)第一個(gè)Java程序,主要介紹JDK的安裝使用、Java的集成開發(fā)環(huán)境的安裝使用,并動(dòng)手實(shí)現(xiàn)第一個(gè)Java應(yīng)用程序;項(xiàng)目3 Java語言基礎(chǔ)、項(xiàng)目4程序的流程控制和項(xiàng)目5方法與數(shù)組,詳細(xì)介紹Java語言的核心語法、流程控制語句、方法的定義和調(diào)用、數(shù)組的使用等,這些都是使用Java語言編寫應(yīng)用程序代碼的最重要的基本知識(shí),讀者一定要認(rèn)真學(xué)習(xí)每一個(gè)知識(shí)點(diǎn);項(xiàng)目6類與對(duì)象和項(xiàng)目7面向?qū)ο筇匦,詳?xì)介紹了Java面向?qū)ο缶幊痰闹饕R(shí)和技術(shù),對(duì)于初學(xué)者來說面向?qū)ο蟮木幊趟枷胄枰嗨伎肌⒍鄬?shí)踐、花較大精力來理解和掌握;項(xiàng)目8常用API,介紹了Java系統(tǒng)類庫提供給程序員使用的一些常用且實(shí)用的類,尤其是集合類在實(shí)際開發(fā)中很常用;項(xiàng)目9異常處理,介紹了Java的異常處理機(jī)制和異常處理語句,可以令讀者編寫的程序更健壯和更友好;項(xiàng)目10 JDBC數(shù)據(jù)庫編程,詳細(xì)介紹了Java連接數(shù)據(jù)庫和對(duì)數(shù)據(jù)庫進(jìn)行操作的步驟和代碼的編寫,JDBC數(shù)據(jù)庫編程技術(shù)在實(shí)際開發(fā)中運(yùn)用十分廣泛,讀者應(yīng)認(rèn)真學(xué)習(xí)和掌握J(rèn)DBC數(shù)據(jù)庫編程技術(shù),為后續(xù)運(yùn)用Java語言開發(fā)各種類型的應(yīng)用程序打下堅(jiān)實(shí)的基礎(chǔ)。
Java程序設(shè)計(jì)課程是實(shí)踐性較強(qiáng)的課程,讀者需要通過大量的實(shí)踐以掌握J(rèn)ava語言的使用、編程技巧,養(yǎng)成良好的規(guī)范編碼的習(xí)慣,因此本書每個(gè)項(xiàng)目均設(shè)計(jì)了許多例程,使讀者能通過這些例程加強(qiáng)對(duì)知識(shí)點(diǎn)的理解,也能通過動(dòng)手實(shí)現(xiàn)這些例程而潛移默化地鍛煉動(dòng)手編碼能力。每章結(jié)束時(shí)都給出了典型的實(shí)訓(xùn)任務(wù),通過對(duì)這些實(shí)訓(xùn)任務(wù)的實(shí)踐練習(xí),可以進(jìn)一步鍛煉和提高編碼能力。
為了方便教學(xué),本書還配有電子課件等教學(xué)資源包,任課教師和學(xué)生可以登錄“我們愛讀書”網(wǎng)(www.ibook4us.com)免費(fèi)注冊(cè)并瀏覽,或者發(fā)郵件至hustpeiit@163.com免費(fèi)索取。
本書由武漢軟件工程職業(yè)學(xué)院肖英任主編;由武漢軟件工程職業(yè)學(xué)院劉嵩、趙丙秀、馬力,江西應(yīng)用科技學(xué)院彭軍,青島理工大學(xué)琴島學(xué)院馬金霞任副主編;由武漢軟件工程職業(yè)學(xué)院劉潔、郭俐任參編,最后由肖英統(tǒng)稿。
由于時(shí)間倉(cāng)促,加之編者水平有限,書中不妥或錯(cuò)誤之處在所難免,殷切希望廣大讀者批評(píng)指正。同時(shí),懇請(qǐng)讀者一旦發(fā)現(xiàn)錯(cuò)誤,及時(shí)與編者聯(lián)系,以便盡快更正,編者將不勝感激。
編者2016年12月
項(xiàng)目1認(rèn)識(shí)Java語言
1.1計(jì)算機(jī)程序
1.2Java程序設(shè)計(jì)語言
1.3Java平臺(tái)介紹
項(xiàng)目2開發(fā)第一個(gè)Java程序
2.1下載、安裝和配置JDK
2.2JDK+記事本開發(fā)Java程序
2.3集成開發(fā)環(huán)境Eclipse
2.4使用Eclipse開發(fā)Java程序
2.5Java程序開發(fā)的一般流程
項(xiàng)目3Java語言基礎(chǔ)
3.1Java語言的基本語法
3.2常量與變量
3.3運(yùn)算符與表達(dá)式
3.4簡(jiǎn)單的輸入輸出
項(xiàng)目4程序的流程控制
4.1流程控制語句
4.2選擇結(jié)構(gòu)語句
4.3循環(huán)結(jié)構(gòu)語句
4.4跳轉(zhuǎn)控制語句
項(xiàng)目5方法與數(shù)組
5.1方法
5.2數(shù)組
項(xiàng)目6類與對(duì)象
6.1類與對(duì)象的基本概念
6.2創(chuàng)建類
6.3對(duì)象的使用
項(xiàng)目7面向?qū)ο筇匦?nbsp;
7.1對(duì)象的創(chuàng)建與銷毀
7.2引用賦值
7.3方法
7.4類的靜態(tài)成員
7.5繼承
7.6抽象類與接口
7.7類的轉(zhuǎn)型
7.8內(nèi)部類
7.9包與訪問控制修飾符
項(xiàng)目8常用API
8.1API的概念
8.2字符串處理
8.3Math類
8.4日期時(shí)間類
8.5集合類
項(xiàng)目9異常處理
9.1異常概述
9.2處理異常
9.3throw和throws關(guān)鍵字
9.4自定義異常
9.5Java的內(nèi)置異常
項(xiàng)目10JDBC數(shù)據(jù)庫編程
10.1JDBC數(shù)據(jù)庫編程概述
10.2JDBC數(shù)據(jù)庫編程基本操作
10.3JDBC編程進(jìn)階
參考文獻(xiàn)
3.1 Java語言的基本語法 每一種語言都有自己的語法規(guī)則,編程語言也不例外。使用Java語言進(jìn)行程序開發(fā)就必須遵從Java語言的語法規(guī)則。
3.1.1Java程序的基本結(jié)構(gòu) Java程序可由若干個(gè)類組成,至少有一個(gè)類,初學(xué)者暫時(shí)可以簡(jiǎn)單理解為一個(gè)類就可以成為一個(gè)Java程序,這個(gè)類中需要包含一個(gè)main()方法,它是Java程序的執(zhí)行入口。這樣的類定義的一般格式如下: 修飾符class類名{ public static void main(String\[\] args){ 程序代碼 } } 需要注意的幾個(gè)地方: (1)修飾符目前用public,表示這個(gè)類是公共的,它的可訪問權(quán)限是最大的。 (2)class是關(guān)鍵字,聲明定義了一個(gè)類。 (3)Java語言是嚴(yán)格區(qū)分大小寫的,這里的class不能寫為Class,public不能寫為Public,否則Eclipse編譯時(shí)將報(bào)錯(cuò)。 (4)類名按照見名知意原則來取名,一般由一個(gè)或多個(gè)單詞組成,每個(gè)單詞首字母大寫,如HelloWorld。 (5)整個(gè)類體由一對(duì)大括號(hào){}括起來,內(nèi)部包含整個(gè)main()方法的定義。 (6)main()方法由方法頭和一對(duì)大括號(hào){}括起來的方法體組成。方法頭的寫法固定,其中只有args這個(gè)參數(shù)名是可以修改的。方法體中的程序代碼可以包含若干條可執(zhí)行語句,每條語句以分號(hào)(;)結(jié)束,代表實(shí)現(xiàn)一定的功能,例如: System.out.println("Welcome to Java World! "); 這條語句的功能是輸出這句話:Welcome to Java World! 除了雙引號(hào)("")內(nèi)部包含的內(nèi)容,其他地方的符號(hào)全部是英文狀態(tài)下的符號(hào),如點(diǎn)(.)、雙引號(hào)("")、分號(hào)(;)、大括號(hào)、小括號(hào)等。 (7)Java語言對(duì)代碼的格式編排沒有嚴(yán)格的限定,比如類定義的代碼也可以按照如下格式進(jìn)行排版: 修飾符class類名{public static void main(String\[\] args){ 程序代碼}} 但這樣的代碼的層次不清晰,不便于閱讀。因此,為提高程序代碼的可讀性,建議按照以下格式進(jìn)行代碼的排版: publicclassHello { publicstaticvoidmain(Stringargs\[\]){ String name="Tom"; System.out.println("Hello," + Tom); } } 被包含在類體內(nèi)部的整個(gè)main()方法代碼整體向右縮進(jìn),main()方法體中每一條語句各占一行。
3.1.2標(biāo)識(shí)符 在編寫程序時(shí),常常需要定義一些符號(hào)名稱來標(biāo)記類名、方法名、包名、變量名、參數(shù)名等,這些符號(hào)名稱被稱為標(biāo)識(shí)符。標(biāo)識(shí)符是由字母、數(shù)字、下劃線(_)和美元符號(hào)($)組成的字符序列,區(qū)分大小寫,不能以數(shù)字開頭,不能是Java中的關(guān)鍵字。 以下為合法的標(biāo)識(shí)符: aIdentifier、_Identifier、$Identifier、cat、stu_1 以下標(biāo)識(shí)符不合法: 2018WorldCup(數(shù)字開頭)、Identifier@Java(@為非法組成部分)、else(關(guān)鍵字) 在程序中使用標(biāo)識(shí)符時(shí),必須嚴(yán)格遵守標(biāo)識(shí)符的定義規(guī)則,否則程序在編譯時(shí)會(huì)報(bào)錯(cuò)。除以上必須遵守的規(guī)則之外,為了增強(qiáng)代碼的可讀性,建議也遵循以下的編碼規(guī)范: (1)類名、接口名每個(gè)單詞的首字母大寫,例如HelloWorld,MyClass。 (2)變量名、方法名第一個(gè)單詞全小寫,從第二個(gè)單詞開始每個(gè)單詞首字母大寫,例如stuName,getStuName。 (3)常量名所有字母都大寫,多個(gè)單詞之間可以使用下劃線連接,例如DAY_OF_WEEK。 (4)包名所有字母全小寫,例如java.util。
3.1.3關(guān)鍵字 關(guān)鍵字是Java語言中事先定義好的已經(jīng)被賦予了特定含義的單詞,也稱作保留字。關(guān)鍵字對(duì)于Java的編譯器來說有特殊的作用,如先前提到的class表示定義一個(gè)類。目前Java語言中的關(guān)鍵字如下所示: abstract boolean break byte case catch char class const continue default do double else extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while assert enum 注意,所有的關(guān)鍵字都是小寫,不能將關(guān)鍵字當(dāng)作標(biāo)識(shí)符來使用。
3.1.4注釋 注釋是對(duì)程序中某行代碼或某個(gè)功能的解釋說明。在源代碼中寫上注釋,是一個(gè)良好的開發(fā)習(xí)慣。一方面,注釋可以幫助自己或者他人更好地理解源代碼的用途、使用條件、使用方法、結(jié)果等;另一方面,便于以后的系統(tǒng)維護(hù)和升級(jí)等。 注釋在Java源文件中有效,在編譯程序時(shí)編譯器會(huì)忽略這些注釋信息,不會(huì)將其編譯到字節(jié)碼文件中去。 Java語言的注釋有三種類型,具體如下。 1.單行注釋:// “//”后面的內(nèi)容為注釋內(nèi)容,不參與編譯。例如: int i=1;//定義整型變量i,初值為1 2.多行注釋:/*......*/ 注釋內(nèi)容較長(zhǎng),需要換行時(shí),使用“/* 注釋內(nèi)容 */”的形式進(jìn)行注釋。例如: int i=1; /*定義整型變量i i的初值為1 */
3.Javadoc注釋:/**.......*/ 使用/**.......*/括起來的注釋,可以使用Javadoc工具提取其注釋內(nèi)容生成HTML形式的開發(fā)幫助文檔。
3.2 常量與變量 計(jì)算機(jī)可以處理的數(shù)據(jù)是一個(gè)廣義的概念。例如,128,3.14159是數(shù)據(jù),“你好”這一串字符也是數(shù)據(jù),前者是數(shù)值數(shù)據(jù),后者是字符串?dāng)?shù)據(jù),是非數(shù)值數(shù)據(jù)。顯然,為了表示這些數(shù)據(jù),它們?cè)趦?nèi)存中必須以不同的方式存放,占用的存儲(chǔ)空間也不同,為處理這些數(shù)據(jù),計(jì)算機(jī)能夠?qū)λ鼈兪┘拥倪\(yùn)算類型也不同。為此,編程語言建立了數(shù)據(jù)類型的概念,對(duì)程序中處理的數(shù)據(jù)進(jìn)行分類。 每一種數(shù)據(jù)類型定義了一個(gè)具有相同性質(zhì)的數(shù)據(jù)集合。各種數(shù)據(jù)類型的數(shù)據(jù)具有不同的性質(zhì)。程序中所用到的每一個(gè)數(shù)據(jù)(包括常量和變量),都有一個(gè)和它相聯(lián)系的類型。由此決定了數(shù)據(jù)所具有的值,也決定了對(duì)該數(shù)據(jù)所能進(jìn)行的操作。
3.2.1常量 常量就是程序中固定不變的值,是不能改變的數(shù)據(jù)。 一種常量是程序中出現(xiàn)的字面值,它們也有所屬的數(shù)據(jù)類型。比如:100是整型常量,3.14159是浮點(diǎn)型常量,‘A’是字符型常量,“你好”是字符串常量,true和false分別是表示邏輯真和假的常量。 這種字面值常用于給變量賦值,例如: doubleprice=8.5; //定義了double類型的變量price,賦予初值8.5 其中賦值號(hào)(=)的作用是將其后邊的值賦給左邊的變量,8.5就是浮點(diǎn)型字面值常量。price是變量,它的值是可以修改的,可再用賦值號(hào)(=)將其值修改為別的值。例如: double price=8.5; //定義了double類型的變量price,賦予初值8.5 price=10.5;//修改price變量的值為10.5 另一種常量:通過關(guān)鍵字final將變量定義為常量。一個(gè)變量如果被定義為常量,則其值不可再修改。例如: final double PI=3.14; //正確 PI=3.1415926; //編譯時(shí)報(bào)錯(cuò),常量PI的值定義后不可再修改 常量命名的規(guī)范是:所有字母全大寫,多個(gè)單詞之間用下劃線(_)連接。 3.2.2變量 變量是指在程序執(zhí)行過程中其值可以改變的數(shù)據(jù)。程序運(yùn)行期間,隨時(shí)可能產(chǎn)生一些臨時(shí)數(shù)據(jù),程序會(huì)將這些數(shù)據(jù)保存在一些內(nèi)存單元中,這些內(nèi)存單元用一個(gè)標(biāo)識(shí)符來進(jìn)行標(biāo)識(shí),這樣的內(nèi)存單元就是變量,定義的標(biāo)識(shí)符就是變量名,內(nèi)存單元中存儲(chǔ)的數(shù)據(jù)就是變量的值。 通過代碼來學(xué)習(xí)變量的定義: int m=10;//定義了整型變量m,初值為10 int n;//定義了變量n,未賦予初值 n=m+3;//取變量m的值與3相加,和值存入變量n的內(nèi)存單元 上述代碼執(zhí)行到第二行時(shí)的內(nèi)存狀態(tài)如圖31所示,執(zhí)行第三行時(shí)的內(nèi)存狀態(tài)如圖32所示。 圖31變量m、n在內(nèi)存中的狀態(tài)(第二行) 圖32變量m、n在內(nèi)存中的狀態(tài)(第三行) 在方法體內(nèi),變量定義后須先賦值,然后才能使用。 例程31VariableDemo.java。 package ch03; public class VariableDemo { public static void main(String\[\] args) { int m; System.out.println(m);//此行會(huì)報(bào)錯(cuò) } } 編譯時(shí),語句System.out.println(m);處會(huì)報(bào)錯(cuò),原因就是變量m定義了變量名,未經(jīng)賦值不可使用。 將上述例程代碼修改為如下代碼: package ch03; public class VariableDemo { public static void main(String\[\] args) { int m;//定義變量m,未賦值 m=10;//m的內(nèi)存單元存入整型值10 System.out.println(m); } } 可編譯成功,運(yùn)行結(jié)果將輸出:10。