《Java程序設(shè)計(jì)應(yīng)用開發(fā)》全套教學(xué)課件_第1頁(yè)
《Java程序設(shè)計(jì)應(yīng)用開發(fā)》全套教學(xué)課件_第2頁(yè)
《Java程序設(shè)計(jì)應(yīng)用開發(fā)》全套教學(xué)課件_第3頁(yè)
《Java程序設(shè)計(jì)應(yīng)用開發(fā)》全套教學(xué)課件_第4頁(yè)
《Java程序設(shè)計(jì)應(yīng)用開發(fā)》全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩460頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

面向?qū)ο蟪绦蛟O(shè)計(jì)

第1章Java概述第2章Java編程基礎(chǔ)第3章Java面向?qū)ο蠡A(chǔ)第4章面向?qū)ο蟾呒?jí)特性第5章面向?qū)ο蟾呒?jí)特性第6章Java常用類第7章Java集合第8章圖形用戶界面開發(fā)第8章圖形用戶界面開發(fā)-作業(yè)案例第9章多線程第10章Java網(wǎng)絡(luò)程序設(shè)計(jì)第11章IO(輸入輸出)第12章JDBC技術(shù)全套可編輯PPT課件Java程序設(shè)計(jì)-課程說明課程基本信息總學(xué)時(shí)/總學(xué)分:44學(xué)時(shí)/3學(xué)分理論學(xué)時(shí):28上機(jī)學(xué)時(shí):16課程類別:專業(yè)必修課考試類型:院考閉卷筆試:平時(shí)比例(作業(yè)、考勤)+末考比例:40%+60%面向?qū)ο蟪绦蛟O(shè)計(jì)-課程說明《面向?qū)ο蟪绦蛟O(shè)計(jì)》是計(jì)算機(jī)學(xué)科各專業(yè)的核心編程課程本課程是計(jì)算機(jī)學(xué)科(軟件工程,網(wǎng)絡(luò)工程,信息安全,計(jì)算機(jī)科學(xué)與技術(shù))等專業(yè)的一門核心專業(yè)必修課,是Java高級(jí)程序設(shè)計(jì)、移動(dòng)開發(fā)、Web程序設(shè)計(jì)、云開發(fā)等課程的先修課。Java是一門面向?qū)ο蟮木幊陶Z(yǔ)言,功能強(qiáng)大、簡(jiǎn)單易用且應(yīng)用范圍較廣。其主要內(nèi)容有:(1)程序設(shè)計(jì)基礎(chǔ):數(shù)據(jù)類型、控制結(jié)構(gòu)、方法、數(shù)組等的基本概念、操作和應(yīng)用;(2)面向?qū)ο蠡A(chǔ):封裝、繼承、多態(tài)等特性的基本原理、操作及應(yīng)用;(3)面向?qū)ο笊钊爰皯?yīng)用:抽象類、接口的基本概念及應(yīng)用,輸入和輸出流,Java集合,圖形化界面設(shè)計(jì)(4)多線程、網(wǎng)絡(luò)編程、數(shù)據(jù)庫(kù)編程。第1章Java概述

本章內(nèi)容1.1認(rèn)識(shí)Java1.2JDK的使用1.3Java語(yǔ)言的集成開發(fā)環(huán)境1.1認(rèn)識(shí)Java1.1.1什么是Java在認(rèn)識(shí)Java之前,先了解兩個(gè)基本概念。1.軟件開發(fā)軟件開發(fā)是根據(jù)用戶要求建造軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。軟件開發(fā)是一項(xiàng)包括需求捕捉、需求分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試的系統(tǒng)工程。軟件是一系列按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合,分為系統(tǒng)軟件和應(yīng)用軟件。軟件一般使用某種程序設(shè)計(jì)語(yǔ)言來(lái)實(shí)現(xiàn),通常采用相應(yīng)的開發(fā)工具進(jìn)行開發(fā)。2.計(jì)算機(jī)語(yǔ)言語(yǔ)言是人與人之間用于溝通的一種方式。例如,中國(guó)人與中國(guó)人用普通話溝通;中國(guó)人要和英國(guó)人交流,需要學(xué)習(xí)英語(yǔ)。計(jì)算機(jī)語(yǔ)言是人與計(jì)算機(jī)交流的方式。如果人要與計(jì)算機(jī)交互,需要學(xué)習(xí)計(jì)算機(jī)語(yǔ)言。計(jì)算機(jī)語(yǔ)言有很多種,如C、C++、Java、Python、PHP等。計(jì)算機(jī)語(yǔ)言(1)C/C++程序設(shè)計(jì)語(yǔ)言

大中型游戲大多使用C/C++作為程序設(shè)計(jì)語(yǔ)言。C/C++是所有程序設(shè)計(jì)人員公認(rèn)的功能強(qiáng)大的程序設(shè)計(jì)語(yǔ)言,也是運(yùn)行時(shí)速度比較快的語(yǔ)言。(2)JAVA程序設(shè)計(jì)語(yǔ)言Java程序具有跨平臺(tái)的優(yōu)點(diǎn),程序的移植性好,所以Java非常適合進(jìn)行游戲制作。對(duì)于大型網(wǎng)絡(luò)游戲來(lái)說,使用Java語(yǔ)言設(shè)計(jì)則不具備速度優(yōu)勢(shì)。(3)FlashActionScriptFlashActionScript屬于一種腳本語(yǔ)言,通常嵌入在Flash文件中,負(fù)責(zé)對(duì)Flash動(dòng)畫流程進(jìn)行控制。使用FlashActionScript設(shè)計(jì)出來(lái)的游戲畫面精美,容量也較小,所以在小游戲的設(shè)計(jì)領(lǐng)域迅速走紅。(4)C#程序設(shè)計(jì)語(yǔ)言

C#(讀做“Csharp”)是由C++和Java發(fā)展演化而來(lái)的程序語(yǔ)言,同時(shí)具備了兩種語(yǔ)言的尤點(diǎn),既支持面向?qū)ο蟪绦蛟O(shè)計(jì),又具有很高的運(yùn)行速度。1.1認(rèn)識(shí)JavaJava語(yǔ)言版本Java語(yǔ)言發(fā)展到今天,有多個(gè)版本。1995年5月23日,SUN公司將Oak語(yǔ)言重新命名為Java,1996年1月23日Sun公司推出JDK1.0,標(biāo)志著Java正式誕生。Java語(yǔ)言第一次提出了“WriteOnce,RunAnywhere”的口號(hào)。1998年12月4日,JDK迎來(lái)了一個(gè)里程碑式的版本JDK1.2,工程代號(hào)為Playground(競(jìng)技場(chǎng)),Sun在這個(gè)版本中把Java技術(shù)體系拆分為3個(gè)發(fā)展方向。(1)面向桌面應(yīng)用開發(fā)的J2SE(Java2PlatformStandardEdition,標(biāo)準(zhǔn)版):包含構(gòu)成Java語(yǔ)言核心的類,如數(shù)據(jù)庫(kù)連接、接口定義、輸入/輸出和網(wǎng)絡(luò)編程,主要用于開發(fā)一般個(gè)人電腦上的應(yīng)用軟件。(2)面向手機(jī)等移動(dòng)終端開發(fā)的J2ME(Java2PlatformMicroEdition,微型版):包含J2SE中的一部分類,用于消費(fèi)類電子產(chǎn)品的軟件開發(fā),如呼機(jī)、智能卡、手機(jī)、PDA和機(jī)頂盒。(3)面向企業(yè)級(jí)應(yīng)用開發(fā)的J2EE(Java2PlatformEnterpriseEdition,企業(yè)版):包含J2SE中的所有類,還包含用于開發(fā)企業(yè)級(jí)應(yīng)用的類,如EJB、Servlet、JSP、XML和事務(wù)控制,也是現(xiàn)在Java應(yīng)用的主要方向,用于開發(fā)企業(yè)級(jí)應(yīng)用軟件。1.1認(rèn)識(shí)JavaJava語(yǔ)言版本自從JDK1.3開始,Sun維持了一個(gè)習(xí)慣:大約每隔兩年發(fā)布一個(gè)JDK的主版本,以動(dòng)物命名,期間發(fā)布的各個(gè)修正版本則以昆蟲作為工程名稱。2009年4月20日,Oracle公司宣布正式以74億美元的價(jià)格收購(gòu)Sun公司,Java商標(biāo)從此正式歸Oracle所有。2011年7月28日,Oracle公司發(fā)布JavaSE7(JDK1.7)。2014年3月18日,Oracle公司發(fā)布JavaSE8(JDK1.8),市場(chǎng)主流版本。2019年9月,Oracle公司發(fā)布JavaSE13(JDK13)。最新的版本是2021年3月16日,Oracle公司發(fā)表發(fā)布JavaSE16(JDK16),僅支持6個(gè)月,屬于短期版本。2022年3月推出JDK19。1.1認(rèn)識(shí)Java1.1.2Java語(yǔ)言的特點(diǎn)Java的語(yǔ)法從C語(yǔ)言繼承而來(lái),Java許多面向?qū)ο蟮奶匦远际艿紺++的影響。事實(shí)上,Java語(yǔ)言完全面向?qū)ο?,摒棄了C和C++的不足。1.簡(jiǎn)單易用2.面向?qū)ο?.分布式4.解釋型5.健壯6.可移植性7.擁有較高的性能8.具有多線程處理能力1.1認(rèn)識(shí)Java1.1.3Java語(yǔ)言的應(yīng)用1.桌面GUI應(yīng)用程序2.移動(dòng)應(yīng)用程序3.嵌入式系統(tǒng)4.Web應(yīng)用程序5.企業(yè)應(yīng)用程序6.科學(xué)應(yīng)用1.2JDK的使用Sun公司提供一套Java開發(fā)工具,簡(jiǎn)稱JDK(JavaDevelopmentKit)。JDK是程序員使用Java語(yǔ)言編寫Java程序所需的開發(fā)工具包,是提供給程序員使用的。JDK包含了運(yùn)行環(huán)境JRE(JavaRuntimeEnvironment),同時(shí)還包含了編譯Java源碼的編譯器javac,還包含了很多Java程序調(diào)試、分析和打包的工具,以及Java程序編寫所需的文檔和demo例子程序。由于JDK8比較穩(wěn)定,是目前市場(chǎng)上主流的JDK版本,本書將針對(duì)JDK8版本進(jìn)行講解和運(yùn)用。JDK和JRE如果僅需要運(yùn)行Java程序,只需僅僅安裝JRE就可以。如果需要編寫Java程序,需要安裝JDK。JRE工具中只包含Java運(yùn)行工具,不包含Java編譯工具。1.2JDK的使用1.2.1JDK的安裝從Oracle官方網(wǎng)站下載相應(yīng)的IDK安裝文件。1.下載安裝JDK的安裝包從Oracle官網(wǎng)/java/technologies/javase-downloads.html下載安裝文件“jdk-8u201-windows-x64.exe",下載好JDK的安裝包之后,雙擊運(yùn)行該文件1.2JDK的使用1.2.1JDK的安裝2.JDK環(huán)境變量的配置JDK的安裝包安裝完畢后,需進(jìn)行環(huán)境變量的配置。1.2JDK的使用1.2.1JDK的安裝2.JDK環(huán)境變量的配置JDK的安裝包安裝完畢后,需進(jìn)行環(huán)境變量的配置。從Windows系統(tǒng)中啟動(dòng)命令提示符窗口cmd,執(zhí)行Java–version命令,驗(yàn)證JDK是否安裝成功,看到圖中JDK版本信息則說明JDK安裝成功。1.2JDK的使用1.2.2Java程序運(yùn)行機(jī)制1.Java程序運(yùn)行過程Java程序開發(fā)過程涉及Java源文件(.java文件)、字節(jié)碼文件(.class文件)、機(jī)器碼指令。Java源文件被編譯成能被Java虛擬機(jī)執(zhí)行的字節(jié)碼文件。Java程序運(yùn)行機(jī)制示意圖如圖所示。1.2JDK的使用1.2.2Java程序運(yùn)行機(jī)制2.Java虛擬機(jī)(JavaVirtalMachine)Java虛擬機(jī)JVM是一個(gè)可以執(zhí)行Java字節(jié)碼的虛擬機(jī)進(jìn)程,或者可以說是一個(gè)虛擬的計(jì)算機(jī),具有指令集并使用不同的存儲(chǔ)區(qū)域,負(fù)責(zé)執(zhí)行指令,管理數(shù)據(jù)、內(nèi)存、寄存器。Java虛擬機(jī)機(jī)制屏蔽了底層運(yùn)行平臺(tái)的差別,實(shí)現(xiàn)了“一次編譯,到處運(yùn)行”。1.2JDK的使用1.2.3Java程序的開發(fā)過程1.編寫Java源程序文件用記事本編寫一個(gè)“HelloWorld”小程序來(lái)驗(yàn)證,保存為HelloWorld.java。

publicclassHelloWorld{

publicstaticvoidmain(String[]args){

System.out.println("HelloHelloWorld");

}

}2.編譯Java源程序文件打開命令提示符窗口,在命令提示符窗口中輸入:cd程序所在文件夾例如cdc:\HellojavacHelloWorld.java3.運(yùn)行Java程序命令提示符窗口中再輸入javaHelloworld運(yùn)行編譯好的class字節(jié)碼文件。1.3Java語(yǔ)言的集成開發(fā)環(huán)境IDE集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment)能夠幫助開發(fā)人員輕松編寫和調(diào)試程序。一個(gè)好的IDE具有許多強(qiáng)大的功能,可以幫助我們編寫代碼,包括調(diào)試,編輯,切換視圖,代碼管理等。Eclipse是目前最流行的Java語(yǔ)言開發(fā)工具。Eclipse具有強(qiáng)大的代碼編排功能,可以幫助程序開發(fā)人員完成語(yǔ)法修正、代碼修正、補(bǔ)全文字、信息提示等編碼工作,大大提高了程序開發(fā)的效率。Eclipse目前亦有人通過插件使其作為其他計(jì)算機(jī)語(yǔ)言比如C++、PHP、Python等語(yǔ)言開發(fā)工具。1.3Java語(yǔ)言的集成開發(fā)環(huán)境在這里同樣以Helloworld.java程序?yàn)槔?,?lái)說明如何使用Eclipse來(lái)進(jìn)行Java程序的開發(fā)。(1)新建Java項(xiàng)目“File”→“New”→“JavaProject”,創(chuàng)建一個(gè)Java項(xiàng)目(2)新建Java類鼠標(biāo)右鍵單擊項(xiàng)目下的src文件夾,選擇“New”→“Class”(3)運(yùn)行Java程序單擊PackageExplorer視圖中HelloWorld.java文件,在彈出的菜單中選擇“RunAs”→“JavaApplication”運(yùn)行程序。也可以選中要運(yùn)行的文件,直接單擊工具欄中綠色的三角按鈕

運(yùn)行程序1.3Java語(yǔ)言的集成開發(fā)環(huán)境EclipseNetBeansNetBeans是Sun公司(2009年被甲骨文收購(gòu))在2000年創(chuàng)立的開放源代碼供開發(fā)人員和客戶社區(qū)的家園,旨在構(gòu)建世界級(jí)的JavaIDE。NetBean開發(fā)環(huán)境提供了豐富的產(chǎn)品文檔和培訓(xùn)資源以及大量的第三方插件。IntelliJIDEAIntelliJIDEA是一款綜合的Java編程環(huán)境,被許多開發(fā)人員和行業(yè)專家譽(yù)為市場(chǎng)上最好的IDE。它提供了一系列最實(shí)用的的工具組合:智能編碼輔助和自動(dòng)控制,支持J2EE,Ant,JUnit,SVN和Git集成,非平行的編碼檢查和創(chuàng)新的GUI設(shè)計(jì)器。本章小結(jié)1.計(jì)算機(jī)語(yǔ)言2.JDK的使用3.Java語(yǔ)言的集成開發(fā)環(huán)境4.使用Eclipse開發(fā)Java項(xiàng)目第2章Java編程基礎(chǔ)

本章內(nèi)容2.1標(biāo)識(shí)符與數(shù)據(jù)類型2.2常量與變量2.3運(yùn)算符和表達(dá)式2.4邏輯控制語(yǔ)句2.5Java數(shù)組和應(yīng)用2.6Java方法2.1標(biāo)識(shí)符與數(shù)據(jù)類型2.1.1關(guān)鍵字關(guān)鍵字是Java語(yǔ)言里事先定義好并賦予特殊含義的英文單詞,在程序設(shè)計(jì)中不能再將其定義成別的用途。2.1.2標(biāo)識(shí)符標(biāo)識(shí)符是程序員定義的有效字符序列,用來(lái)標(biāo)志自己定義的變量名、符號(hào)常量名、對(duì)象名、數(shù)組名和類名等。標(biāo)識(shí)符的命名應(yīng)遵循以下規(guī)則。(1)只能由字母、數(shù)字、美元$和下劃線組成,第一個(gè)字符不能是數(shù)字字符??梢允褂脻h字,但一般不建議使用。(2)不能是Java中的關(guān)鍵字。(3)中間不能有空格。(4)不要太長(zhǎng),一般以不超過31個(gè)字符為宜。(5)標(biāo)識(shí)符的命名最好遵循Java推薦的命名規(guī)范,如常量命名全部采用大寫字母,類名每個(gè)單詞首字母大寫,屬性與方法名從第二個(gè)單詞開始首字母大寫等。(6)Java語(yǔ)言使用Unicode標(biāo)準(zhǔn)字符集下面是不合法的標(biāo)識(shí)符:D.S.Name,#323,57S9,c<d,-W在Java中,字母的大小寫是有區(qū)別的。例如,Add、add和ADD分別表示不同的標(biāo)識(shí)符。2.1.3數(shù)據(jù)類型數(shù)據(jù)類型決定了該數(shù)據(jù)所占用的存儲(chǔ)空間、所表示的數(shù)據(jù)范圍和精度,以及所能進(jìn)行的運(yùn)算。Java的數(shù)據(jù)類型大致可分為兩類,一類是基本數(shù)據(jù)類型,另一類是引用數(shù)據(jù)類型?;緮?shù)據(jù)類型包括整型、字符型、浮點(diǎn)型和布爾型等;引用數(shù)據(jù)類型包括類、接口、數(shù)組、枚舉等,如圖2-1所示。2.2常量與變量2.2.1常量常量就是在程序中固定不變的值,是不能改變的數(shù)據(jù)。例如,數(shù)字1、字符'a'、浮點(diǎn)數(shù)3.2等都是常量。在Java中,常量包括整型常量、浮點(diǎn)型常量、布爾常量、字符常量等。1.整型常量整型常量是整數(shù)類型的數(shù)據(jù),有二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制4種表示形式。二進(jìn)制0b01101100、0B10110101八進(jìn)制0342十六進(jìn)制0x25AF在程序中為了標(biāo)明不同的進(jìn)制,數(shù)據(jù)都有特定的標(biāo)識(shí),八進(jìn)制必須以0開頭,如0711、0123;十六進(jìn)制必須以0x或0X開頭,如0xaf3、0Xff;整數(shù)以十進(jìn)制表示時(shí),第一位不能是0。2.2.1常量2.浮點(diǎn)數(shù)常量浮點(diǎn)數(shù)常量就是在數(shù)學(xué)中用到的小數(shù),浮點(diǎn)數(shù)分為單精度浮點(diǎn)數(shù)(float)和雙精度浮點(diǎn)數(shù)(double)兩種類型。其中,單精度浮點(diǎn)數(shù)后面以F或f結(jié)尾,而雙精度浮點(diǎn)數(shù)則以D或d結(jié)尾。當(dāng)然,在使用浮點(diǎn)數(shù)時(shí)也可以在結(jié)尾處不加任何的后綴,此時(shí)JVM會(huì)默認(rèn)浮點(diǎn)數(shù)為double類型的浮點(diǎn)數(shù)。浮點(diǎn)數(shù)常量還可以通過科學(xué)計(jì)數(shù)的形式表示,如456,可以表示成4.56E2。2.34f2.342.2.1常量3.字符常量字符常量用于表示一個(gè)字符,一個(gè)字符常量要用一對(duì)英文半角格式的單引號(hào)(')括起來(lái)。字符常量可以是英文字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、以及由轉(zhuǎn)義序列表示的特殊字符。Java有兩種字符常量,即一般字符常量如'A'、'$'、''(空格)和轉(zhuǎn)義字符常量。'\101'表示大寫A字符,'\u4F60'表示漢字'你'轉(zhuǎn)義字符名

稱功

能\a響鈴用于輸出響鈴\b退格(Backspace鍵)用于退回一個(gè)字符\f換頁(yè)用于輸出\n換行符用于輸出\r回車符用于輸出\t水平制表符(Tab鍵)用于輸出\v縱向制表符用于制表\\反斜杠字符用于表示一個(gè)反斜杠字符\'單引號(hào)用于表示一個(gè)單引號(hào)字符\"雙引號(hào)用于表示一個(gè)雙引號(hào)字符\dddddd是ASCII碼的八進(jìn)制值,最多三位用于表示該ASCII碼代表的字符\uhhhhUnicode轉(zhuǎn)義字符,4個(gè)十六進(jìn)制值用于表示一個(gè)Unicode編碼的字符表2-3Java常用的轉(zhuǎn)義字符2.2.1常量4.字符串常量字符串常量用于表示一串連續(xù)的字符,一個(gè)字符串常量要用一對(duì)英文半角格式的雙引號(hào)(“”)括起來(lái)。例如:"HelloWorld","My\nJava","Howoldareyou?1234"5.布爾常量布爾常量即布爾型的值,常用于邏輯判斷。布爾常量有true和false兩個(gè)值。6.null常量null常量只有一個(gè)值null,表示對(duì)象的引用為空。7.常量的定義Java中必須用final關(guān)鍵字聲明一個(gè)常量。final關(guān)鍵字表示這個(gè)值一旦被賦值,不能再更改。final數(shù)據(jù)類型常量名=缺省值;finalintSTUDENT_NUM=10;習(xí)慣上,常量的名字全部大寫,詞與詞之間用下劃線分隔。2.2.2變量變量是指在程序運(yùn)行過程中其值可以改變的量。變量是有名字的,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元。在Java語(yǔ)言中使用變量之前必須先定義它的數(shù)據(jù)類型,根據(jù)其數(shù)據(jù)類型的不同,可分為不同類別的變量,如字符型變量、整型變量、浮點(diǎn)型變量等。變量只有在其作用域中才能起到作用,而離開此作用域時(shí),局部變量將會(huì)被清空。當(dāng)程序進(jìn)入一個(gè)方法時(shí),其中的局部變量將會(huì)被創(chuàng)建,在一個(gè)作用域中,即一個(gè)方法(函數(shù))中,變量名是唯一的,不允許重復(fù)。1.定義變量inta,b,c; //定義三個(gè)整型變量a,b,cfloatf; //定義一個(gè)單精度實(shí)型變量fcharc1,c2,c3; //定義三個(gè)字符型變量c1,c1,c3intwidth=30; //定義變量及賦值intheight; //定義變量height=40; //給變量賦值變量經(jīng)定義以后,便可以對(duì)其賦值和使用,若在使用前沒有賦值,則在編譯時(shí)會(huì)指出語(yǔ)法錯(cuò)誤。2.2.2變量2.基本數(shù)據(jù)類型的變量(1)整型byteb=127;shorts=123;inti=5000;(2)浮點(diǎn)型Java中的浮點(diǎn)型包括float和double兩種,在內(nèi)存中float占用4字節(jié)即32位,用F、f表示。而double占用8字節(jié)即64位,用帶D或d或不加后綴的數(shù)值表示。floatf=18.5f; //定義變量及賦值doublemoney=57.8;2.2.2變量2.基本數(shù)據(jù)類型的變量(3)布爾值型現(xiàn)實(shí)生活中的“真”和“假”邏輯判斷是通過布爾值(boolean)來(lái)表示的,其值為true和false。boolean值并沒有指定其在內(nèi)存空間中的大小,而僅是通過true和false來(lái)表示。booleanflag=true;(4)字符型字符型(char)存放的對(duì)象只能為一個(gè)字符,而每個(gè)字符占用內(nèi)存空間的大小為16比特位(2個(gè)字節(jié))。聲明字符型需要用單引號(hào)把字符括起來(lái),例如:charc='定'; //定義變量c及賦值charb='a'; //定義變量b及賦值chard='\u4F60';

//定義變量d及賦值漢字'你'

2.3運(yùn)算符和表達(dá)式表達(dá)式由變量、運(yùn)算符和數(shù)字等組合而成,例如:area=width*height;按運(yùn)算符在表達(dá)式中與運(yùn)算對(duì)象的關(guān)系(連接運(yùn)算對(duì)象的個(gè)數(shù))可分為:?jiǎn)文窟\(yùn)算(一元運(yùn)算符,只需一個(gè)操作數(shù))。雙目運(yùn)算(二元運(yùn)算符,需兩個(gè)操作數(shù))。三目運(yùn)算(三元運(yùn)算符,需三個(gè)操作數(shù))。按運(yùn)算符的運(yùn)算性質(zhì)又可分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符等。

2.3.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式1.基本算術(shù)運(yùn)算符+(加法運(yùn)算符,或正值運(yùn)算符,如1+2,+3)-(減法運(yùn)算符,或負(fù)值運(yùn)算符,如1-2,-3)*(乘法運(yùn)算符,如1*2)/

(除法運(yùn)算符,如1/2)%(模運(yùn)算符或稱求余運(yùn)算符,如7%3=1)

2.自增和自減(增1和減1)運(yùn)算符自增和自減運(yùn)算符都是單目運(yùn)算符,它們表示為++和--,運(yùn)算結(jié)果是將操作數(shù)增1或減1。這兩個(gè)運(yùn)算符都有前置和后置兩種形式。前置形式是指運(yùn)算符在操作數(shù)的前面,后置形式是指運(yùn)算符在操作數(shù)的后面。例如:a++; //等價(jià)于a=a+1++a; //等價(jià)于a=a+1a--; //等價(jià)于a=a-1--a; //等價(jià)于a=a-12.3.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.自增和自減(增1和減1)運(yùn)算符inta=3;intb=++a; //相當(dāng)于a=a+1;b=a;System.out.println(a+""+b); //結(jié)果為:44intc=a++; //相當(dāng)于c=a;a=a+1;System.out.println(a+""+c); //結(jié)果為:542.3.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式inta=3;intb=++a; //相當(dāng)于a=a+1;b=a;System.out.println(a+""+b); //結(jié)果為:44intc=a++; //相當(dāng)于c=a;a=a+1;System.out.println(a+""+c); //結(jié)果為:542.3.2賦值運(yùn)算符和賦值表達(dá)式1.賦值運(yùn)算符賦值運(yùn)算符“=”的一般格式為:

變量=表達(dá)式;它表示將其右側(cè)的表達(dá)式求出結(jié)果,賦給其左側(cè)的變量。例如:inti;i=3*(4+5); //i的值變?yōu)?7賦值運(yùn)算符的結(jié)合性是從右至左的,因此程序中可以出現(xiàn)連續(xù)賦值的情況。例如,下面的賦值是合法的:

inti,j,k;

i=j=k=10; //i,j,k都賦值為102.復(fù)合賦值運(yùn)算符表2-4是一些常用的復(fù)合賦值運(yùn)算符。2.3.2賦值運(yùn)算符和賦值表達(dá)式2.復(fù)合賦值運(yùn)算符表2-4中的非直接賦值運(yùn)算符在執(zhí)行速度上快于一般的賦值方式,即A-=B相當(dāng)于A=A-B,而前者的執(zhí)行速度卻快于后者。

inta=12,x=3,y;a+=a; //表示a=a+a=12+12=24;y*=x+2;

//表示y=y*(x+2);而不是y=y*x+2;2.3.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符用于兩個(gè)值進(jìn)行比較,運(yùn)算結(jié)果為true(真)或false(假)。Java中的關(guān)系運(yùn)算符如下:<(小于)

<=(小于等于)>(大于)>=(大于等于)==(等于)!=(不等于)關(guān)系運(yùn)算符都是雙目運(yùn)算符,其結(jié)合性是從左到右,<、<=、>和>=這4個(gè)運(yùn)算符的優(yōu)先級(jí)相同,==和!=運(yùn)算符的優(yōu)先級(jí)相同,前4個(gè)運(yùn)算的優(yōu)先級(jí)高于后兩個(gè)。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。例如:a+b>c 等價(jià)于 (a+b)>ca!=b>c 等價(jià)于 a!=(b>c)2.3.4邏輯運(yùn)算符和邏輯表達(dá)式Java中常用的三種邏輯運(yùn)算符是:&&(邏輯與,二元運(yùn)算符)a&&b||(邏輯或,二元運(yùn)算符)a||b?。ㄟ壿嫹牵辉\(yùn)算符)!a注意短路運(yùn)算a&&ba||b2.3.5位運(yùn)算符和位運(yùn)算表達(dá)式位(bit)是計(jì)算機(jī)中表示信息的最小單位,一般用0和1表示。一個(gè)字符在計(jì)算機(jī)中占一個(gè)字節(jié),一個(gè)字節(jié)由8個(gè)二進(jìn)制組成。位運(yùn)算符對(duì)操作數(shù)按其二進(jìn)制形式逐位進(jìn)行運(yùn)算,參加位運(yùn)算的操作數(shù)必須為整數(shù)。相應(yīng)的運(yùn)算規(guī)則為:按位與:0&0=00&1=01&0=01&1=1,即只要按位有一個(gè)為0,按位與&的結(jié)果就為0。按位或:0|0=00|1=11|0=11|1=1,即只要按位有一個(gè)為1,按位或|結(jié)果就為1。按位異或:0^0=00^1=11^0=11^1=0,即按位相同為0,不同為1。2.3.5位運(yùn)算符和位運(yùn)算表達(dá)式1.按位與(&)變量c的值為2。2.3.5位運(yùn)算符和位運(yùn)算表達(dá)式2.按位或(|)變量c的值為19。2.3.5位運(yùn)算符和位運(yùn)算表達(dá)式3.按位異或(^)變量c的值為17。2.3.5位運(yùn)算符和位運(yùn)算表達(dá)式4.按位求反(~)5.左移(<<)2.3.5位運(yùn)算符和位運(yùn)算表達(dá)式6.右移(>>)a=12a>>3注意:“>>>”運(yùn)算符的含義同“>>”類似,但其是無(wú)符號(hào)移位,左側(cè)補(bǔ)0。2.3.6條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符“?:”是Java中唯一一個(gè)三目運(yùn)算符,該運(yùn)算符需要三個(gè)操作數(shù)。表達(dá)式1?表達(dá)式2:表達(dá)式3其中,當(dāng)表達(dá)式1為true時(shí),結(jié)果為表達(dá)式2;當(dāng)表達(dá)式1為false時(shí),結(jié)果為表達(dá)式3。例如inta=6,b=7,m;m=a<b?a:b//m=62.3.7運(yùn)算符優(yōu)先級(jí)運(yùn)算符參與運(yùn)算的先后順序,通常把這種順序稱作運(yùn)算符的優(yōu)先級(jí)。2.3.8類型轉(zhuǎn)換1.自動(dòng)類型轉(zhuǎn)換(隱式類型轉(zhuǎn)換)當(dāng)把一個(gè)低級(jí)數(shù)據(jù)類型轉(zhuǎn)換成高級(jí)數(shù)據(jù)類型時(shí),即占用內(nèi)存空間字節(jié)小的轉(zhuǎn)換成占用內(nèi)存空間字節(jié)大

的數(shù)據(jù),Java執(zhí)行的為自動(dòng)類型轉(zhuǎn)換,在程序中不需要作任何說明,如把byte類型轉(zhuǎn)換成int類型就屬于這種情況。byteb=3;intx=b;

2.強(qiáng)制類型轉(zhuǎn)換(顯式類型轉(zhuǎn)換)當(dāng)把高級(jí)數(shù)據(jù)類型轉(zhuǎn)換成低級(jí)的數(shù)據(jù)類型時(shí),稱為強(qiáng)制類型轉(zhuǎn)換,但是此時(shí)會(huì)出現(xiàn)數(shù)據(jù)缺失的情況。強(qiáng)制類型轉(zhuǎn)換必須作出明確的說明,即讓虛擬機(jī)明白這是強(qiáng)制轉(zhuǎn)換,否則會(huì)出現(xiàn)錯(cuò)誤。(轉(zhuǎn)換類型)變量名inta=10;byteb=(byte)a;如果在轉(zhuǎn)換時(shí)數(shù)據(jù)超出了轉(zhuǎn)換類型的取值范圍,那么將會(huì)造成數(shù)據(jù)“溢出”,導(dǎo)致轉(zhuǎn)換失敗,例如:inta=200;byteb=(byte)a;2.3.9打印語(yǔ)句把結(jié)果顯示到控制臺(tái)上。System.out.println("helloxmj"); //在控制臺(tái)上打印helloxmjSystem.out.print("hello");System.out.println("xmj");利用print()方法打印信息后不能換行再打印下面一段信息,而是直接在同一行中打印出來(lái),但是println()方法可以自動(dòng)換行。2.3.10Java語(yǔ)言注釋1.以“/*”開頭并以“*/”結(jié)尾的注釋形式可以跨越多行代碼,中間為注釋內(nèi)容,這種注釋方式也稱為多行注釋,例如:/*這是測(cè)試部分請(qǐng)讀者注意*/注釋的內(nèi)容不會(huì)被編譯,所以也可以把上面的分行注釋改寫成單行,例如:/*這是測(cè)試部分請(qǐng)讀者注意*/2.單行注釋,以“//”開頭,后面緊跟注釋內(nèi)容,此內(nèi)容必須和“//”符號(hào)在同一行,例如://這是測(cè)試部分請(qǐng)讀者注意3.文檔注釋,其也稱為多行注釋,以“/**”開頭,以“*/”結(jié)尾,也可以跨越多行代碼,中間為注釋內(nèi)容,此注釋方式可以把注釋內(nèi)容轉(zhuǎn)化為超文本文件,這里需要用到Java中的Javadoc命令,例如:/**這是測(cè)試部分*請(qǐng)讀者注意*/注意:如果利用文檔注釋“/**…*/”注釋某個(gè)變量,當(dāng)在IDE工具中把鼠標(biāo)移動(dòng)到此變量上面時(shí),會(huì)出現(xiàn)注釋的內(nèi)容,這樣可以方便程序員更快地知道此變量的含義。2.4邏輯控制語(yǔ)句在Java中包括的邏輯控制語(yǔ)句有if…elseswitchforwhiledo…whilebreakreturn2.4.1選擇結(jié)構(gòu)語(yǔ)句選擇結(jié)構(gòu)語(yǔ)句有if…elseswitch1.if…else語(yǔ)句if(布爾表達(dá)式)

語(yǔ)句1或者if(布爾表達(dá)式)

語(yǔ)句2else

語(yǔ)句3if…else是邏輯語(yǔ)句中最簡(jiǎn)單的一個(gè),而其中的else是作為可選項(xiàng)出現(xiàn)的if語(yǔ)句在某些情況下可以用條件運(yùn)算符“?:”來(lái)簡(jiǎn)化表達(dá)。例如,求兩個(gè)數(shù)a、b中較大的數(shù),采用if語(yǔ)句如下:if(a>b)c=a;elsec=b;也可用條件運(yùn)算符實(shí)現(xiàn):c=a>b?a:b;2.4.1選擇結(jié)構(gòu)語(yǔ)句2.if…else語(yǔ)句的嵌套一個(gè)if…else語(yǔ)句可實(shí)現(xiàn)二選一分支,if…else語(yǔ)句的嵌套則可以實(shí)現(xiàn)多選一的多路分支情況。

if(表達(dá)式1)語(yǔ)句1;elseif(表達(dá)式2)語(yǔ)句2;elseif(表達(dá)式3)語(yǔ)句3;…elseif(表達(dá)式n)語(yǔ)句n;else語(yǔ)句n+1;Java獲得鍵盤輸入Java獲得鍵盤輸入可以使用Scanner類的方法。通常需要經(jīng)過3個(gè)步驟。①在程序開頭導(dǎo)入類:importjava.util.Scanner;②輸入之前創(chuàng)建Scanner類對(duì)象:Scannerscanner=newScanner(System.in);System.in是標(biāo)準(zhǔn)輸入流對(duì)象,對(duì)應(yīng)標(biāo)準(zhǔn)輸入設(shè)備即鍵盤。③輸入數(shù)據(jù)賦給相應(yīng)的變量。輸入不同類型的數(shù)據(jù)要用不同的方法,這些方法都是以next開頭的,如nextInt()用來(lái)輸入int類型數(shù)據(jù),nextByte()用來(lái)輸入byte類型數(shù)據(jù),nextDouble()用來(lái)輸入double類型數(shù)據(jù),等等。讀者可以通過JavaAPI幫助文檔查看所要使用的方法。例如鍵盤輸入成績(jī)score如下:Scannerscanner=newScanner(System.in);score=scanner.nextInt();//鍵盤輸入成績(jī)2.4.1選擇結(jié)構(gòu)語(yǔ)句switch語(yǔ)句被稱為多路分支語(yǔ)句,雖然使用if…else嵌套語(yǔ)句可以實(shí)現(xiàn)多路分支,但是嵌套過多,會(huì)導(dǎo)致程序不便于閱讀,而使用switch語(yǔ)句,邏輯結(jié)構(gòu)顯示更加整潔。switch(變量值){case常量1:

語(yǔ)句1break;case常量2:

語(yǔ)句2break;//…default:

語(yǔ)句nbreak;}注意:通過上面的語(yǔ)句可以看到,每個(gè)case后面都有一個(gè)break結(jié)尾,這是為了使執(zhí)行流程跳到switch末尾,其中break是可選的,如果省略break語(yǔ)句,則會(huì)繼續(xù)執(zhí)行下面的case語(yǔ)句。2.4.2循環(huán)結(jié)構(gòu)語(yǔ)句1.while和do…while語(yǔ)句while語(yǔ)句也為循環(huán)語(yǔ)句,其實(shí)現(xiàn)方法為:當(dāng)循環(huán)開始時(shí),條件判斷為true,此循環(huán)將一直進(jìn)行下去,條件判斷為false時(shí)循環(huán)才會(huì)結(jié)束,并且每執(zhí)行一次循環(huán)體都會(huì)重新計(jì)算條件判斷。do…while循環(huán)和while循環(huán)的區(qū)別就在于其一定會(huì)執(zhí)行一次,而while循環(huán)并不一定會(huì)循環(huán)(當(dāng)條件判斷表達(dá)式開始就為false時(shí))。2.4.2循環(huán)結(jié)構(gòu)語(yǔ)句1.while和do…while語(yǔ)句【例2.3】求sum=1!+2!+3!+…+n!,當(dāng)sum≥1000時(shí)n的值。【例2.4】輸入一個(gè)非負(fù)的整數(shù),將其反向后輸出。例如,輸入24789,變成98742輸出。【例2.5】輸入兩個(gè)正整數(shù),求它們的最大公約數(shù)。2.4.2循環(huán)結(jié)構(gòu)語(yǔ)句2.for語(yǔ)句for循環(huán)語(yǔ)句是程序中用到最多的邏輯控制語(yǔ)句,其實(shí)現(xiàn)方法為初始化變量值,然后對(duì)此變量值進(jìn)行條件判斷,而且在每次循環(huán)后都進(jìn)行指定的變量修改?!纠?.7】打印出所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如,153是一個(gè)“水仙花數(shù)”,因?yàn)?53=13+53+33。2.4.3循環(huán)的嵌套Java的三種循環(huán)語(yǔ)句可以相互嵌套,構(gòu)成循環(huán)嵌套。(1)循環(huán)嵌套時(shí),外層循環(huán)和內(nèi)層循環(huán)間是包含關(guān)系,即內(nèi)層循環(huán)必須被完全包含在外層循環(huán)中,不得交叉。(2)當(dāng)程序中出現(xiàn)循環(huán)嵌套時(shí),程序每執(zhí)行一次外層循環(huán),則其內(nèi)層循環(huán)必須循環(huán)所有的次數(shù)(即內(nèi)層循環(huán)結(jié)束)后,才能進(jìn)入到外層循環(huán)的下一次循環(huán)?!纠?.8】輸出一個(gè)金字塔圖形,如圖2-8所示。2.4.3循環(huán)的嵌套【例2.9】輸出九九乘法表,如圖2-9所示。2.4.4跳轉(zhuǎn)語(yǔ)句功能是改變程序的流程,使程序從其所在的位置轉(zhuǎn)向另一處執(zhí)行。Java提供了跳轉(zhuǎn)語(yǔ)句包括break語(yǔ)句、continue語(yǔ)句和return語(yǔ)句。1.break語(yǔ)句break語(yǔ)句的一般格式為:break;該語(yǔ)句只能用于兩種情況:(1)用在switch結(jié)構(gòu)中,當(dāng)某個(gè)case分支執(zhí)行完后,使用break語(yǔ)句跳出switch結(jié)構(gòu)。(2)用在循環(huán)結(jié)構(gòu)中,用break語(yǔ)句來(lái)結(jié)束循環(huán)。如果放在嵌套循環(huán)中,則break語(yǔ)句只能結(jié)束其所在的那層循環(huán)?!纠?.10】任意輸入若干個(gè)正整數(shù)(不多于50個(gè)),計(jì)算已輸入正整數(shù)之和,直到輸入了負(fù)數(shù)為止。2.4.4跳轉(zhuǎn)語(yǔ)句2.continue語(yǔ)句continue語(yǔ)句的一般格式為:continue;該語(yǔ)句只能用在循環(huán)結(jié)構(gòu)中。當(dāng)在循環(huán)結(jié)構(gòu)中遇到continue語(yǔ)句時(shí),則跳過continue語(yǔ)句后的其他語(yǔ)句,結(jié)束本次循環(huán),并轉(zhuǎn)去判斷循環(huán)控制條件,以決定是否進(jìn)行下一次循環(huán)?!纠?.11】輸出0~100之間所有不能被3整除的數(shù)。break和continue可以控制循環(huán)語(yǔ)句的流程,其中break為退出循環(huán),不再執(zhí)行下面剩余的循環(huán)部分,而continue則是停止當(dāng)前循環(huán),跳轉(zhuǎn)到循環(huán)起始位置開始下面的循環(huán)部分。2.4.4跳轉(zhuǎn)語(yǔ)句3.return語(yǔ)句return語(yǔ)句被稱為返回語(yǔ)句,其有兩種作用:一是指定方法的返回值,二是可以結(jié)束方法的執(zhí)行,直接從方法中跳出。publicclassExample2_12{publicstaticvoidmain(String[]args){

inti=0; //定義初始值while(i<3){ //判斷循環(huán)條件i++;

//變量自增if(i==2) //當(dāng)i為2時(shí)return; //跳出方法(1)System.out.println("循環(huán)內(nèi)部"+i);}System.out.println("循環(huán)外部"+i);}}把(1)其中的return修改成break和continue,然后運(yùn)行相應(yīng)代碼2.5Java數(shù)組和應(yīng)用引入數(shù)組就不需要在程序中定義大量變量,大大減少了程序中變量的數(shù)量,使程序精煉,而且數(shù)組含義清楚,使用方便,明確地反映了數(shù)據(jù)間的聯(lián)系。2.5.1Java數(shù)組定義和創(chuàng)建1.定義數(shù)組定義數(shù)組格式如下:數(shù)組元素類型[]數(shù)組名;或數(shù)組元素類型

數(shù)組名[];//為了和C++兼容,不建議使用int[]array;//定義了一個(gè)int數(shù)組,名字為array,元素類型為intdoublescore[];//定義了一個(gè)double數(shù)組,名字為score,元素類型為double2.5.1Java數(shù)組定義和創(chuàng)建2.創(chuàng)建數(shù)組(1)new關(guān)鍵字使用new關(guān)鍵字,并指定數(shù)組元素的個(gè)數(shù)(數(shù)組的長(zhǎng)度),以確定在堆空間分配內(nèi)存空間的大小。使用格式如下:數(shù)組名=new數(shù)組元素類型[數(shù)組元素個(gè)數(shù)];例如:int[]array;array=newint[5];也可以定義數(shù)組和創(chuàng)建數(shù)組合并在一起,用一條語(yǔ)句實(shí)現(xiàn):int[]array=newint[5];//合二為一,元素初值為02.5.1Java數(shù)組定義和創(chuàng)建2.創(chuàng)建數(shù)組數(shù)組名=new數(shù)組元素類型[]{元素初值列表};int[]array=newint[]{1,2,3,4,5};2.5.1Java數(shù)組定義和創(chuàng)建2.創(chuàng)建數(shù)組(2)初始化的方式創(chuàng)建數(shù)組在定義數(shù)組的時(shí)候,可以不使用new關(guān)鍵字,直接給出初始化的元素初值列表,系統(tǒng)將先按照初值的個(gè)數(shù)在堆內(nèi)存中創(chuàng)建數(shù)組對(duì)象,然后將初值依次存儲(chǔ)在數(shù)組元素中。數(shù)組元素類型[]數(shù)組名={元素初值列表};例如:int[]array={1,2,3,4,5};【例2.13】理解數(shù)組引用性質(zhì)2.5.2使用數(shù)組1.?dāng)?shù)組元素的使用數(shù)組元素的使用方式:

數(shù)組名[下標(biāo)]2.遍歷數(shù)組中的元素Java還提供foreach循環(huán)語(yǔ)句。該語(yǔ)句提供一種簡(jiǎn)單、明了的方法來(lái)循環(huán)訪問數(shù)組的元素。使用foreach語(yǔ)句的一般形式如下:for(數(shù)據(jù)類型

循環(huán)變量:數(shù)組或集合名){//循環(huán)體}int[]mya={1,2,3,4,5,6};

for(inti:mya)

System.out.print(""+i);2.5.2使用數(shù)組3.一維數(shù)組的應(yīng)用(1)遞推問題(2)排序問題

【例2.13】用數(shù)組來(lái)求Fibonacci數(shù)列問題。Fibonacci數(shù)列是1,1,2,3,5,8,13,21,34,…

【例2.14】編寫程序,用冒泡法對(duì)10個(gè)數(shù)排序(按由小到大的順序)。2.5.3多維數(shù)組1.二維數(shù)組的聲明和創(chuàng)建二維數(shù)組的定義有很多方式。第一種方式:數(shù)據(jù)類型[][]數(shù)組名=new數(shù)據(jù)類型[行的個(gè)數(shù)][列的個(gè)數(shù)];下面以第一種方式聲明一個(gè)數(shù)組,如下所示。int[][]xx=newint[3][4];2.5.3多維數(shù)組1.二維數(shù)組的聲明和創(chuàng)建第二種方式:數(shù)據(jù)類型[][]數(shù)組名=newint[行的個(gè)數(shù)][];下面以第二種方式聲明一個(gè)數(shù)組,如下所示。int[][]xx=newint[3][];定義中只聲明了此二維數(shù)組由3個(gè)元素組成,其中每個(gè)元素是一維數(shù)組,需要繼續(xù)創(chuàng)建每個(gè)元素。例如:xx[0]=newint[1];xx[1]=newint[2];xx[2]=newint[3];2.5.3多維數(shù)組1.二維數(shù)組的聲明和創(chuàng)建第三種方式:數(shù)據(jù)類型[][]數(shù)組名={{第0行初始值},{第1行初始值},...,{第n行初始值}};下面以第三種方式聲明一個(gè)數(shù)組,如下所示。int[][]xx={{1,2},{3,4,5,6},{7,8,9}};2.5.3多維數(shù)組2.二維數(shù)組中元素的訪問二維數(shù)組中元素的訪問也是通過索引的方式。二維數(shù)組元素的表示形式為:數(shù)組名[行下標(biāo)][列下標(biāo)]以下普通for循環(huán)的方式輸出數(shù)組arry的所有元素值。int[][]arry=newint[3][4];

for(i=0;i<3;i++){//先遍歷行

for(j=0;j<4;j++)//在每一行,逐一遍歷各個(gè)列

System.out.print(arry[i][j]+"");//從遍歷的行和列獲取二維數(shù)組的元素內(nèi)容

System.out.println();}3.二維數(shù)組的應(yīng)用輸出九行楊輝三角形2.5.4Arrays類在Java中,數(shù)組實(shí)際上是對(duì)象。Arrays類是所有數(shù)組類型的抽象基類型,位于java.util包中,使用時(shí)需要導(dǎo)入(importjava.util.Arrays),在Java中用作所有數(shù)組的基類,提供創(chuàng)建、操作、搜索和排序數(shù)組的方法。1.length屬性2.sort()方法3.fill()方法4.toString()和deepToString()方法5.copyOf()和copyOfRange()方法2.6Java方法方法就是一段可以重復(fù)調(diào)用的代碼。在Java中,定義一個(gè)方法的語(yǔ)法格式如下:修飾符返回值類型方法名(參數(shù)類型參數(shù)名1,參數(shù)類型參數(shù)名2,...){

執(zhí)行語(yǔ)句 ... return返回值;}【例2.17】演示方法的定義與調(diào)用。2.6Java方法2.6.2方法的重載所謂方法重載,就是在同一個(gè)作用域內(nèi)方法名相同但參數(shù)個(gè)數(shù)或者參數(shù)類型不同的方法。例如,在同一個(gè)作用域內(nèi)同時(shí)定義三個(gè)add()方法,這三個(gè)add()方法就是重載的方法?!纠?.18】演示重載方法的定義與調(diào)用,在該案例中,定義三個(gè)add()方法,分別用于實(shí)現(xiàn)兩個(gè)整數(shù)相加、三個(gè)整數(shù)相加以及兩個(gè)小數(shù)相加的功能。定義了三個(gè)同名的add()方法,但它們的參數(shù)個(gè)數(shù)或類型不同,從而形成了方法的重載。在main()方法中調(diào)用add()方法時(shí),通過傳入不同的參數(shù)便可以確定調(diào)用哪個(gè)重載的方法,如add(1,2)調(diào)用的是add(intx,inty)方法。需要注意的是,方法的重載與返回值類型無(wú)關(guān)。本章小結(jié)1.常量與變量2.運(yùn)算符和表達(dá)式3.邏輯控制語(yǔ)句4.Java數(shù)組第3章Java面向?qū)ο蠡A(chǔ)

本章內(nèi)容3.1面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和概念3.2Java語(yǔ)言的類和對(duì)象3.3構(gòu)造方法3.4this關(guān)鍵字3.5static關(guān)鍵字3.6包3.7綜合案例——模擬猜拳游戲3.8綜合案例——酒店客房管理3.1面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和概念

面向?qū)ο蟪绦蛟O(shè)計(jì)(ObjectOrientedProgramming,OOP)是軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的方法,這種方法既吸取了結(jié)構(gòu)化程序設(shè)計(jì)的絕大部分優(yōu)點(diǎn),又考慮了現(xiàn)實(shí)世界與面向?qū)ο罂臻g的映射關(guān)系,所追求的目標(biāo)是將現(xiàn)實(shí)世界的問題求解盡可能的簡(jiǎn)單化。在自然界和社會(huì)生活中,一個(gè)復(fù)雜的事物總是由很多部分組成的。面向?qū)ο蟪绦蛟O(shè)計(jì)方法提出了一些全新的概念,如類和對(duì)象、封裝、繼承和多態(tài)3.1面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和概念3.1.1類和對(duì)象的概念1.類面向?qū)ο蠓椒ㄖ械摹邦悺?,是具有相同屬性和行為的一組對(duì)象的集合,它為屬于該類的全部對(duì)象提供了抽象的描述,其內(nèi)部包括屬性和行為兩個(gè)主要部分。2.對(duì)象面向?qū)ο蠓椒ㄖ械膶?duì)象,是描述系統(tǒng)中某一客觀事物的一個(gè)實(shí)體。對(duì)象由一組屬性和一組行為構(gòu)成。屬性是用來(lái)描述對(duì)象靜態(tài)特征的數(shù)據(jù)項(xiàng),而行為是用來(lái)描述對(duì)象動(dòng)態(tài)特征的操作序列。類和對(duì)象的關(guān)系就像模具與產(chǎn)品之間的關(guān)系,一個(gè)屬于某類的對(duì)象稱為該類的一個(gè)實(shí)例,如張三就是人這個(gè)類的一個(gè)實(shí)例,或是這個(gè)類的具體表現(xiàn)。對(duì)象和類對(duì)象和類屬性(數(shù)據(jù)成員、成員變量)3.1面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和概念3.1.2面向?qū)ο蟮娜筇匦?.封裝與數(shù)據(jù)隱藏在Java中,封裝是通過類來(lái)實(shí)現(xiàn)的。類是描述具有相同屬性和方法的對(duì)象的集合,定義了該集合中每個(gè)對(duì)象所共有的屬性和方法。封裝也是面向?qū)ο蠓椒ㄖ械囊粋€(gè)重要原則。2.繼承繼承(inheritance)是面向?qū)ο蟪绦蛟O(shè)計(jì)能夠提高軟件開發(fā)效率的重要原因之一,也是軟件規(guī)?;囊粋€(gè)重要手段。子類的對(duì)象擁有其父類的全部屬性和行為,稱為子類對(duì)父類的繼承。例如,人們認(rèn)識(shí)了汽車的特征之后,再考慮小轎車時(shí),因?yàn)橹佬∞I車也是汽車,于是認(rèn)為小轎車具有汽車的全部一般特征,從而可以把精力用于發(fā)現(xiàn)和描述小轎車不同于一般汽車的獨(dú)有的那些特征。3.1面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和概念3.1.2面向?qū)ο蟮娜筇匦?.多態(tài)性面向?qū)ο蟮耐ㄐ艡C(jī)制是消息,面向?qū)ο蠹夹g(shù)是通過向未知對(duì)象發(fā)送消息來(lái)進(jìn)行程序設(shè)計(jì)的。當(dāng)一個(gè)對(duì)象發(fā)出消息時(shí),對(duì)于相同的消息,不同的對(duì)象具有不同的反應(yīng)能力。這樣,一個(gè)消息可以產(chǎn)生不同的響應(yīng)效果,這種現(xiàn)象稱為多態(tài)性。在操作計(jì)算機(jī)時(shí),“雙擊鼠標(biāo)左鍵”這個(gè)操作可以很形象地說明多態(tài)性的概念。不同的對(duì)象會(huì)有不同的反應(yīng)?!拔募A”對(duì)象“可執(zhí)行文件”對(duì)象音樂文件多態(tài)

Animal類Dog類Bird類Fish類動(dòng)物會(huì)“動(dòng)”act行為不同3.1面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和概念3.1.3面向?qū)ο蠛兔嫦蜻^程的區(qū)別C語(yǔ)言是一個(gè)結(jié)構(gòu)化語(yǔ)言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過一個(gè)過程,對(duì)輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制),面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就可以了。面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描述某個(gè)事物在整個(gè)解決問題的步驟中的行為。五子棋游戲?yàn)槔v解面向過程的設(shè)計(jì)五子棋面向過程的設(shè)計(jì)思路就是首先分析問題的步驟:①開始游戲,②黑子先走,③繪制畫面,④判斷輸贏,⑤輪到白子,⑥繪制畫面,⑦判斷輸贏,⑧返回步驟②,⑨輸出最后結(jié)果。把上面每個(gè)步驟用分別的函數(shù)來(lái)實(shí)現(xiàn),問題就解決了。面向?qū)ο蟮脑O(shè)計(jì)而面向?qū)ο蟮脑O(shè)計(jì)則是從另外的思路來(lái)解決問題。整個(gè)五子棋可以分為①黑白雙方,這兩方的行為是一模一樣的;②棋盤系統(tǒng),負(fù)責(zé)繪制畫面;③規(guī)則系統(tǒng),負(fù)責(zé)判定諸如犯規(guī)、輸贏等。第一類對(duì)象(玩家對(duì)象)負(fù)責(zé)接受用戶輸入,并告知第二類對(duì)象(棋盤對(duì)象)棋子布局的變化,棋盤對(duì)象接收到了棋子的變化就要負(fù)責(zé)在屏幕上面顯示出這種變化,同時(shí)利用第三類對(duì)象(規(guī)則系統(tǒng))來(lái)對(duì)棋局進(jìn)行判定。好處:功能擴(kuò)展容易加入悔棋的功能僅僅改動(dòng)(棋盤對(duì)象)

五子棋游戲改為圍棋游戲,區(qū)別就是規(guī)則面向過程的設(shè)計(jì)【例3.1】面向過程編程的方法實(shí)現(xiàn)輸入圓的半徑,求圓的周長(zhǎng)和面積。①輸入半徑r;②計(jì)算周長(zhǎng)=2*π*r;③計(jì)算面積=pi*r2;④輸出半徑、周長(zhǎng)、面積。importjava.util.Scanner;publicclassExample3_1{publicstaticvoidjisuan(intr){System.out.println("theradiusis:"+r);System.out.println("theareais:"+r*r*3.14);System.out.println("thegirthis:"+2*r*3.14);}publicstaticvoidmain(String[]args){intr;System.out.println("inputtheradius:");Scannerscanner=newScanner(System.in);System.out.print("請(qǐng)輸入第半徑:");r=scanner.nextInt();//鍵盤輸入

jisuan(r);}}面向?qū)ο蟮脑O(shè)計(jì)設(shè)計(jì)圓類對(duì)象實(shí)例importjava.util.Scanner;classCircle{doubleradius;voidsetRadius(doubler){radius=r;}voidgetGirth(){System.out.println("theareais:"+2*radius*3.14);}voidgetArea(){System.out.println("theareais:"+radius*radius*3.14);}};publicclassExample3_2{publicstaticvoidmain(String[]args){Circlec;//對(duì)象實(shí)例

c.setRadius(3);c.getGirth();c.getArea();}}3.2Java語(yǔ)言的類和對(duì)象在Java程序中類和對(duì)象是最基本、最重要的單元。類表示某類群體的一些基本特征抽象,對(duì)象表示一個(gè)個(gè)具體的事物。學(xué)生可以看作是一個(gè)類,小明、李華、大軍都是學(xué)生類型的對(duì)象。類用于描述多個(gè)對(duì)象的共同特征,它是對(duì)象的模板。對(duì)象用于描述現(xiàn)實(shí)中的個(gè)體,它是類的實(shí)例。對(duì)象是根據(jù)類創(chuàng)建的,一個(gè)類可以對(duì)應(yīng)多個(gè)對(duì)象。3.2.1類的定義class類名{

成員變量;//靜態(tài)變量(類變量)和實(shí)例變量

成員方法;}成員變量用于描述對(duì)象的特征,成員變量也被稱作對(duì)象的屬性;成員方法用于描述對(duì)象的行為,可簡(jiǎn)稱為方法。類名首字母大寫,駝峰描述法DrawCicle3.2.1類的定義學(xué)生類定義的示例代碼如下所示。classStudent{Stringname; //定義String類型的變量nameintage=22; //定義int類型的變量ageStringsex; //定義String類型的變量sex//定義sayHello

()方法

voidsayHello(){System.out.println("大家好,我是"+name+"!");}}定義梯形類Lader類,里面計(jì)算面積方法--行為UML圖3.2.1類的定義在Java中,定義在類中的變量被稱為成員變量,定義在方法中的變量被稱為局部變量。classStudent{intage=20; //類中定義的變量被稱作成員變量voidsayHello(){intage=30; //方法內(nèi)部定義的變量被稱作局部變量System.out.println("大家好,我"+age+"歲了,我在看書!");

}

voidsayHello2(){

System.out.println(“大家好,我”+age+“歲了,我在看書!”);//age=?}}3.2.2對(duì)象的創(chuàng)建與使用對(duì)象(Object)是實(shí)際世界中存在的個(gè)體或概念實(shí)體,它表示世界中某個(gè)具體的事物,如一個(gè)電腦、一本書等事物都屬于對(duì)象。classStudent{Stringname; //定義String類型的變量nameintage; //定義int類型的變量ageStringsex; //定義String類型的變量sex//定義sayHello

()方法

voidsayHello(){System.out.println("大家好,我是"+name+"!");}}3.2.2對(duì)象的創(chuàng)建與使用1.對(duì)象的創(chuàng)建在Java程序中可以使用new關(guān)鍵字創(chuàng)建對(duì)象,具體格式如下:類名對(duì)象名稱;對(duì)象名稱=new類名();classStudent{Stringname; //定義String類型的變量name//定義sayHello

()方法

voidsayHello(){System.out.println("大家好,我是"+name+"!");}}Studentstu;stu

=newStudent();3.2.2對(duì)象的創(chuàng)建與使用2.對(duì)象屬性和方法的訪問通過“.”運(yùn)算符實(shí)現(xiàn),格式如下:對(duì)象名稱.屬性名對(duì)象名稱.方法名

classStudent{ Stringname;//聲明姓名屬性 voidsayHello(){

System.out.println("大家好,我是"+name); }}publicclassExample3_4{publicstaticvoidmain(String[]args){ Studentstu1=newStudent();//創(chuàng)建第一個(gè)Student對(duì)象

Studentstu2=newStudent();//創(chuàng)建第二個(gè)Student對(duì)象

="小明";

//為stu1對(duì)象的name屬性賦值

stu1.sayHello();

//調(diào)用對(duì)象的方法

="小華";

stu2.sayHello(); }}3.2.2對(duì)象的創(chuàng)建與使用classStudent{ Stringname;//聲明姓名屬性 voidsayHello(){

System.out.println("大家好,我是"+name); }}publicclassExample3_4{publicstaticvoidmain(String[]args){ Studentstu1=newStudent();//創(chuàng)建第一個(gè)Student對(duì)象

Studentstu2=newStudent();//創(chuàng)建第二個(gè)Student對(duì)象

="小明";//為stu1對(duì)象的name屬性賦值

stu1.sayHello();//調(diào)用對(duì)象的方法

="小華";

stu2.sayHello(); }}對(duì)象的引用【例3.5】對(duì)象的引用傳遞。classStudent{Stringname; //聲明姓名屬性

intage; //聲明年齡屬性

voidsayHello(){System.out.println("大家好,我是"+name+",年齡"+age);}}publicclassExample3_5{publicstaticvoidmain(String[]args){Studentstu1=newStudent();//聲明stu1對(duì)象并實(shí)例化

Studentstu2=null;//聲明stu2對(duì)象,但不對(duì)其進(jìn)行實(shí)例化

stu2=stu1;

//stu1給stu2分配空間使用權(quán)。

="小明";//為stu1對(duì)象的name屬性賦值

stu1.age=20;stu1.sayHello();//調(diào)用對(duì)象的方法

stu2.age=50;stu2.sayHello();}}3.3構(gòu)造方法

在Java中提供了一個(gè)特殊的成員方法——構(gòu)造方法(也稱為構(gòu)造函數(shù)),通過構(gòu)造方法可以為對(duì)象的屬性初始化。創(chuàng)建一個(gè)類時(shí)都會(huì)提供一個(gè)默認(rèn)的構(gòu)造方法,即無(wú)參的構(gòu)造方法,這里構(gòu)造方法的名字和類名相同,而且沒有返回值。構(gòu)造方法名稱前不能有任何返回值類型(包括void類型)的聲明。不能在構(gòu)造方法中使用return返回一個(gè)值,但是可以單獨(dú)寫return語(yǔ)句作為方法的結(jié)束。1.構(gòu)造方法的定義構(gòu)造方法是類的一個(gè)特殊成員方法,在類實(shí)例化對(duì)象時(shí)自動(dòng)調(diào)用?!纠?.6】創(chuàng)建一個(gè)類名為Student的類,其擁有一個(gè)不帶參數(shù)的構(gòu)造方法Student()?!纠?.7】創(chuàng)建一個(gè)類名為Student的類,其擁有一個(gè)帶參數(shù)的構(gòu)造方法Student()。3.3構(gòu)造方法

2.構(gòu)造方法重載與普通方法一樣,構(gòu)造方法也可以重載。當(dāng)一個(gè)方法名相同而參數(shù)不同時(shí),則說明方法重載。重載是為了可以使用同一個(gè)方法名來(lái)實(shí)現(xiàn)多種功能,默認(rèn)構(gòu)造方法和帶參構(gòu)造方法也是重載?!纠?.8】構(gòu)造方法的重載和普通成員方法的重載。3.4this關(guān)鍵字

注意Java中有一個(gè)特殊的對(duì)象實(shí)例為this,其只能在方法內(nèi)部使用,表示調(diào)用這個(gè)方法的對(duì)象實(shí)例。Java中的this關(guān)鍵字語(yǔ)法比較靈活,其主要作用有以下2種。(1)使用this關(guān)鍵字訪問成員變量。(2)使用this關(guān)鍵字調(diào)用本類的構(gòu)造方法。1.使用this關(guān)鍵字訪問成員變量【例3.9】this關(guān)鍵字訪問成員變量。3.4this關(guān)鍵字

2.使用this關(guān)鍵字調(diào)用構(gòu)造方法構(gòu)造方法是在實(shí)例化對(duì)象時(shí)被Java虛擬機(jī)自動(dòng)調(diào)用,在程序中不能像調(diào)用其他成員方法一樣調(diào)用構(gòu)造方法,但可以在一個(gè)構(gòu)造方法中使用“this(參數(shù)1,參數(shù)2…)”的形式調(diào)用其他的構(gòu)造方法?!纠?.10】this關(guān)鍵字調(diào)用構(gòu)造方法。應(yīng)注意以下幾點(diǎn):①只能在構(gòu)造方法中使用this調(diào)用其他的構(gòu)造方法,不能在成員方法中通過this調(diào)用其他構(gòu)造方法。②在構(gòu)造方法中,使用this調(diào)用構(gòu)造方法的語(yǔ)句必須位于第一行,且只能出現(xiàn)一次。3.5static關(guān)鍵字

在Java中,static關(guān)鍵字是一個(gè)修飾符,用于修飾類的成員方法、類的成員變量,另外可以編寫static代碼塊來(lái)優(yōu)化程序性能;被static關(guān)鍵字修飾的方法或者成員變量不需要依賴于對(duì)象來(lái)進(jìn)行訪問,只要類被加載就可以通過類名去進(jìn)行訪問。3.5.1靜態(tài)成員變量在類中,用static聲明的成員變量為靜態(tài)成員變量,也稱為類變量。靜態(tài)成員變量是屬于類的,也就是從類被創(chuàng)建好后便一直存在,其生命周期與其所在的類相同,在整個(gè)應(yīng)用程序執(zhí)行期間都有效。若一個(gè)類有多個(gè)對(duì)象實(shí)例,那么這些實(shí)例會(huì)共享該靜態(tài)成員變量。同時(shí)在類不創(chuàng)建實(shí)例對(duì)象的情況下,同樣可以用類名訪問該靜態(tài)成員變量的值?!纠?.11】訪問靜態(tài)成員變量。3.5static關(guān)鍵字

3.5.2靜態(tài)方法static修飾的方法一般稱作靜態(tài)方法,也稱為類方法。由于靜態(tài)方法不依賴于任何對(duì)象就可以進(jìn)行訪問,因此對(duì)于靜態(tài)方法來(lái)說,是沒有this的,因?yàn)樗灰栏接谌魏螌?duì)象,既然都沒有對(duì)象,就談不上this了。并且由于這個(gè)特性,在靜態(tài)方法中不能訪問類的非靜態(tài)成員變量和

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論