![JAVA基礎(chǔ)知識(shí)學(xué)習(xí)零基礎(chǔ)_第1頁(yè)](http://file4.renrendoc.com/view/4302c5b4854245e0cd99461cb50d939d/4302c5b4854245e0cd99461cb50d939d1.gif)
![JAVA基礎(chǔ)知識(shí)學(xué)習(xí)零基礎(chǔ)_第2頁(yè)](http://file4.renrendoc.com/view/4302c5b4854245e0cd99461cb50d939d/4302c5b4854245e0cd99461cb50d939d2.gif)
![JAVA基礎(chǔ)知識(shí)學(xué)習(xí)零基礎(chǔ)_第3頁(yè)](http://file4.renrendoc.com/view/4302c5b4854245e0cd99461cb50d939d/4302c5b4854245e0cd99461cb50d939d3.gif)
![JAVA基礎(chǔ)知識(shí)學(xué)習(xí)零基礎(chǔ)_第4頁(yè)](http://file4.renrendoc.com/view/4302c5b4854245e0cd99461cb50d939d/4302c5b4854245e0cd99461cb50d939d4.gif)
![JAVA基礎(chǔ)知識(shí)學(xué)習(xí)零基礎(chǔ)_第5頁(yè)](http://file4.renrendoc.com/view/4302c5b4854245e0cd99461cb50d939d/4302c5b4854245e0cd99461cb50d939d5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JAVA根底1整理課件教師自我介紹教師姓名:(請(qǐng)進(jìn)行自我介紹)字體黑體、字號(hào)24、色白字體華文中宋、字號(hào)根據(jù)內(nèi)容20-32均可、色黑2整理課件課程概述Java開(kāi)發(fā)環(huán)境介紹及編程入門(mén)標(biāo)示符、關(guān)鍵字及數(shù)據(jù)類(lèi)型表達(dá)式及流程控制數(shù)組常用數(shù)據(jù)結(jié)構(gòu)及算法面向?qū)ο缶幊蘋(píng)OP封裝、繼承、多態(tài)異常處理Exception3整理課件課程目標(biāo)掌握程序設(shè)計(jì)語(yǔ)言開(kāi)發(fā)的一般步驟編譯并運(yùn)行Java應(yīng)用程序理解并使用Java的在線幫助文檔理解Java語(yǔ)言的語(yǔ)法元素和結(jié)構(gòu)特點(diǎn)理解面向?qū)ο蟪绦蛟O(shè)計(jì)的一般特性,并且能使用這些特性理解并使用Java異常處理機(jī)制4整理課件程序語(yǔ)言開(kāi)展歷程機(jī)器語(yǔ)言 二進(jìn)制機(jī)器代碼,不便理解,不好記憶,與硬件平臺(tái)相關(guān),不具有可移植性。
匯編語(yǔ)言
用助記符號(hào)來(lái)描述,與機(jī)器代碼一一對(duì)應(yīng),能夠理解,但同樣不可移植。高級(jí)語(yǔ)言
按自然語(yǔ)言的語(yǔ)法風(fēng)格書(shū)寫(xiě)程序, 方便理解,在原代碼的層次上可以實(shí)現(xiàn) 跨平臺(tái)移植。1000100111100101movdptr,#2000if(a>b)max=a;elsemax=b;5整理課件高級(jí)語(yǔ)言開(kāi)發(fā)過(guò)程編輯原代碼編譯
執(zhí)行6整理課件JAVA起源7整理課件JamesGosling 現(xiàn)任SUN公司副總裁及Sun研究院院士,他親手設(shè)計(jì)了Java語(yǔ)言,并開(kāi)發(fā)了Java編譯器和JAVA虛擬機(jī),使Java成為了世界上最流行的開(kāi)發(fā)語(yǔ)言。JAVA創(chuàng)始人8整理課件JAVA歷史1995年,Java首次公開(kāi)亮相。
1996年1月23日SunMicrosystems發(fā)布了JDK1.0。 這個(gè)版本包括了兩局部:運(yùn)行環(huán)境〔即JRE〕和開(kāi)發(fā)環(huán)境(即JDK)。
1997年2月18日發(fā)布了JDK1.1。
1998年,JDK1.2版本發(fā)布。將Java分成了J2EE、J2SE和J2ME。說(shuō)明了Java開(kāi)始向企業(yè),桌面應(yīng)用,和移動(dòng)設(shè)備應(yīng)用3大領(lǐng)域挺進(jìn)。
2000年,JDK1.3發(fā)布。
2002年,JDK1.4發(fā)布。
2004年,JDK1.5發(fā)布。同時(shí)JDK1.5改名為J2SE5.0。
2005年6月,JavaSE6。此時(shí),Java的各種版本已經(jīng)更名以取消其中的數(shù)字“2〞2006年11月13日,SUN公司宣布Java全線采納GNUGeneralPublicLicenseVersion2,從而公開(kāi)了Java的源代碼。9整理課件JAVA應(yīng)用概述JAVAME微型版JAVASE標(biāo)準(zhǔn)版JAVAEE企業(yè)版10整理課件名詞解釋JDK JavaDevelopmentKit(java開(kāi)發(fā)工具包) SoftwareDevelopmentKit(1.2版本-1.4版本)JVM JavaVirtualMachine(java虛擬機(jī))JRE JavaRuntimeEnvironment(java運(yùn)行環(huán)境)
11整理課件JDK 包含Java運(yùn)行的根本類(lèi)庫(kù)和開(kāi)發(fā)命令,安裝JDK可以進(jìn)行完整的Java開(kāi)發(fā)。JRE 包含Java運(yùn)行的根本類(lèi)庫(kù)和一些運(yùn)行命令,安裝JRE可以運(yùn)行編譯好的Java程序。JVM Java語(yǔ)言內(nèi)部運(yùn)行的核心。JAVA開(kāi)發(fā)根本術(shù)語(yǔ)12整理課件JavaProgrammerJava程序員JavaDeveloperJava開(kāi)發(fā)人員JavaWebDeveloperweb開(kāi)發(fā)人員J2EEArchitectJ2EE架構(gòu)師Java職業(yè)的分工13整理課件Java語(yǔ)言特點(diǎn)1、簡(jiǎn)單性: Java語(yǔ)言類(lèi)似于C/C++,可以說(shuō)Java語(yǔ)言是C++語(yǔ)言的一個(gè)純潔的版本,在java語(yǔ)言中沒(méi)有頭文件,指針,運(yùn)算符重載等2、面向?qū)ο? C面向過(guò)程 C++面向過(guò)程+面向?qū)ο? Java純面向?qū)ο蟮恼Z(yǔ)言,3、分布式: Java有一個(gè)擴(kuò)展的例程庫(kù),用于處理Http/Ftp之類(lèi)的Tcp|Ip協(xié)議。 Java語(yǔ)言能通過(guò)url翻開(kāi)的訪問(wèn)網(wǎng)絡(luò)上的對(duì)象,其便利的程序如同本地訪問(wèn).14整理課件Java語(yǔ)言特點(diǎn)4、健壯性: java投入了大量的精力進(jìn)行早期的問(wèn)題檢測(cè),后期的動(dòng)態(tài)檢測(cè),并消除了有出錯(cuò)傾向的狀態(tài),java和c++最大的不同在于java采用的指針模型可以消除重寫(xiě)內(nèi)存和損壞數(shù)據(jù)的可能性.5、平安性: java適用于網(wǎng)絡(luò)/分布式環(huán)境,為了到達(dá)這個(gè)目標(biāo),在平安方面投了大量的精力,使用java可以構(gòu)建防病毒。禁止運(yùn)行時(shí)堆棧溢出,禁止自己內(nèi)存空間,未授權(quán)的讀寫(xiě)文件。6、可移植性: 跨平臺(tái):JVM作用用來(lái)解釋執(zhí)行字節(jié)碼文件根據(jù)不同的平臺(tái)進(jìn)行不同的解釋執(zhí)行,從而可以到達(dá)跨平臺(tái)作用,C++生成直接可以運(yùn)行的機(jī)器碼文件。java素有“一次編譯,到處運(yùn)行〞15整理課件參考書(shū)籍16整理課件Java認(rèn)證介紹SCJPSuncertifiedjava5programmerScjp主要偏重于對(duì)java語(yǔ)言的語(yǔ)法與及JDK的內(nèi)容.SCJDSuncertifiedjava5DeveloperSCJD相對(duì)于SCJP進(jìn)一步測(cè)試用JAVA開(kāi)發(fā)應(yīng)用程序的能力17整理課件開(kāi)發(fā)工具開(kāi)發(fā)環(huán)境JDK編輯器只要是文本編輯器或unix環(huán)境下的viWindows環(huán)境可以使用功能較在的文本編輯器集成開(kāi)發(fā)環(huán)境EclipseIDENetBeans等Eclipse下載網(wǎng)站://java.sun18整理課件Module1Java開(kāi)發(fā)環(huán)境介紹及編程入門(mén)
19整理課件本章目標(biāo)了解高級(jí)語(yǔ)言開(kāi)發(fā)的一般步驟正確安裝及配置Java開(kāi)發(fā)和運(yùn)行環(huán)境理解JVM的運(yùn)行機(jī)制了解java語(yǔ)言的垃圾回收機(jī)制編寫(xiě)并運(yùn)行第一個(gè)java代碼20整理課件21整理課件
JDK下載頁(yè)面Win32平臺(tái)JDK下載Linux平臺(tái)JDK下載22整理課件配置Java環(huán)境變量3.設(shè)置如下三個(gè)環(huán)境變量:JAVA_HOME,CLASSPATH,PATHWindows2000/NT/XP系統(tǒng):開(kāi)始—設(shè)置—控制面板—系統(tǒng)—高級(jí)—環(huán)境變量23整理課件Windows環(huán)境下的安裝配置安裝JDK軟件包設(shè)置環(huán)境變量 點(diǎn)擊我的電腦右鍵----->屬性------>高級(jí)------>環(huán)境變量------->新建 JAVA_HOME=JDK安裝目錄編輯: path=在原來(lái)的path路徑前增加JDK安裝目錄/bin 注意windows平臺(tái)中是以分號(hào)分隔測(cè)試運(yùn)行cmdjavajavacjava-version如果以上三個(gè)命令都能運(yùn)行的話,說(shuō)明安裝成功24整理課件JDK安裝目錄介紹Bin編譯器和工具Demo演示DocsHTML格式的類(lèi)庫(kù)文檔Include用于編譯本地方法的文件Jrejava運(yùn)行環(huán)境文件Lib類(lèi)庫(kù)文件Src類(lèi)庫(kù)源文件25整理課件Java虛擬機(jī)(JVM)BytecodeJVMCPU提供字節(jié)碼〔bytecode〕的運(yùn)行環(huán)境屏蔽底層平臺(tái)的差異26整理課件JVM的作用27整理課件Java垃圾收集的概念Java語(yǔ)言使用new運(yùn)算符來(lái)分配內(nèi)存空間,沒(méi)有動(dòng)態(tài)內(nèi)存分配的概念。Java系統(tǒng)線程自動(dòng)處理無(wú)用內(nèi)存空間的垃圾收集Java程序員只能建議,但不能強(qiáng)制JVM去執(zhí)行垃圾收集程序,使用下面的代碼:java.lang.System.gc()java.lang.Runtime.gc()28整理課件Java程序的運(yùn)行過(guò)程HelloWorldApp.javaHelloWorldApp.classjavacjava跨平臺(tái)不跨平臺(tái)29整理課件第一個(gè)Java程序HelloWorld.java
publicclassHelloWorld{publicstaticvoidmain(Stringargs[]){System.out.println(“HelloWorld!〞);}}30整理課件要點(diǎn)(1)一個(gè)源文件中至多只能有一個(gè)public的class源文件名必須和它中定義的public的類(lèi)名相同一個(gè)文件中可以同時(shí)寫(xiě)多個(gè)類(lèi),但是只能有一個(gè)公開(kāi)的類(lèi)Main方法java程序的入口31整理課件要點(diǎn)(2)編寫(xiě)源代碼,生成.java文件編譯源代碼,生成.class文件 javacHelloWorld.java運(yùn)行該程序javaHelloWorld32整理課件Jvm加載字節(jié)碼文件加載代碼(類(lèi)加載器) 將class字節(jié)碼文件讀入內(nèi)存,并放在數(shù)據(jù)的方法區(qū),在堆區(qū)中創(chuàng)立java.lang.Class對(duì)象,用于封裝類(lèi)在方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)連接 把已經(jīng)讀入內(nèi)存的類(lèi)的二進(jìn)制數(shù)據(jù)合并到j(luò)vm運(yùn)行環(huán)境中去驗(yàn)證代碼(字節(jié)碼校驗(yàn)器) 保證加載類(lèi)有正確的內(nèi)部結(jié)構(gòu),并與其他類(lèi)協(xié)調(diào)一致辭主要有以下幾個(gè)方面:文件結(jié)構(gòu)檢查,語(yǔ)義檢查,字節(jié)碼驗(yàn)證,二進(jìn)制兼容的驗(yàn)證準(zhǔn)備 Jvm為類(lèi)的靜態(tài)變量分配內(nèi)存,并調(diào)置默認(rèn)的初始值解析 Jvm把類(lèi)的二進(jìn)制數(shù)據(jù)中的符號(hào)引用替換為直接引用執(zhí)行代碼(解釋器) Jvm執(zhí)行類(lèi)初始化語(yǔ)句,為類(lèi)靜態(tài)變量賦以初值33整理課件練習(xí):Information.java1.開(kāi)發(fā)一個(gè)Java程序打印出以下信息:姓名性別年齡畢業(yè)學(xué)校戶籍34整理課件Package包結(jié)構(gòu)Packagea.b.c;publicclassHelloWorld{publicstaticvoidmain(Stringargs[]){System.out.println(“HelloWorld!〞);}}將生成的字節(jié)碼文件以包結(jié)構(gòu)形式來(lái)存放,用于方便管理類(lèi)文件Package必須要寫(xiě)在源文件第一行,注釋除外35整理課件Package包結(jié)構(gòu)帶有包結(jié)構(gòu)的程序在編譯是需要加參數(shù):Javac-d.HelloWorld.java運(yùn)行帶包結(jié)構(gòu)的程序時(shí),要指定類(lèi)全名Javaa.b.c.HelloWorld36整理課件Import導(dǎo)入機(jī)制Packagea.b.c;Importjava.util.*;publicclassHelloWorld{publicstaticvoidmain(Stringargs[]){System.out.println(“HelloWorld!〞);System.out.println(newDate());}}37整理課件生成javadoc文檔/**此種注釋存在于源代碼中時(shí),編譯時(shí)使用javadoc命令可以生成doc文檔*/用法:Javadoc-d.HelloWorld.java38整理課件生成javadoc文檔@author@version標(biāo)注在javadoc中的使用使用以上標(biāo)記時(shí)要增加–author-version參數(shù)進(jìn)行注釋文檔的抽取,默認(rèn)情況下會(huì)忽略39整理課件壓縮成jar文件在java中可以將生成的字節(jié)碼文件按照生成目錄的結(jié)構(gòu)壓縮成jar文件方便使用壓縮命令:Jar-cvffirst.jara解壓命令:Jar-xvffirst.jar運(yùn)行jar文件中的程序:java-classpathfirst.jara.b.c.HelloWorld40整理課件Jar命令參數(shù)x解壓u更新d列表v顯示壓縮過(guò)程c創(chuàng)立壓縮文件f壓縮文件名m按照清單指定的系統(tǒng)進(jìn)行壓縮41整理課件命令行參數(shù)Echo.javapublicclassEcho{publicstaticvoidmain(Stringargs[]){System.out.println(args[0]);}}運(yùn)行命令:JavaEchoxubin42整理課件要點(diǎn):可執(zhí)行程序必需要main方法只能public和static調(diào)換位置args可以是任意的名字args[0]代表第一個(gè)命令行參數(shù)注意:運(yùn)行時(shí)一定要有命令行參數(shù)輸入,否那么會(huì)有數(shù)組下標(biāo)越界異常出現(xiàn)43整理課件練習(xí)編程打印出所有命令行的參數(shù)。
從命令參數(shù)中接收姓名,在程序打印 Helloxxxxx44整理課件JavaAPI文檔Downloaditfrom://java.sun45整理課件本章總結(jié)在這一章里,我們討論了以下問(wèn)題:怎樣建立Java開(kāi)發(fā)環(huán)境Java語(yǔ)言的關(guān)鍵特性Java虛擬機(jī)(JVM)的功能Java的垃圾收集機(jī)制常用Java開(kāi)發(fā)命令和開(kāi)發(fā)工具包編寫(xiě)并運(yùn)行一個(gè)Java應(yīng)用程序46整理課件Module2標(biāo)示符、關(guān)鍵字和數(shù)據(jù)類(lèi)型47整理課件本章目標(biāo)程序注釋標(biāo)示符關(guān)鍵字根本數(shù)據(jù)類(lèi)型48整理課件注釋三種類(lèi)型的注釋//單行注釋/* 這是一段多行注釋?zhuān)缭搅硕鄠€(gè)行
*//**這是一個(gè)文檔注釋?zhuān)梢允褂肑DK的javadoc工具從原文件中抽取這種注釋形成程序的幫助文檔。 */使用javadoc命令建立HTML格式的程序文檔javadoc[options][packagenames][sourcefiles][@files]49整理課件Java的標(biāo)示符1,什么是標(biāo)示符?在java語(yǔ)言中用來(lái)給一個(gè)類(lèi)、變量或方法命名的符號(hào)2,標(biāo)示符的命名規(guī)那么:以字母,“_〞或“$〞符號(hào)開(kāi)頭可以包含字母、“_〞、“$〞和數(shù)字符號(hào)大小寫(xiě)敏感不能與保存關(guān)鍵字沖突沒(méi)有長(zhǎng)度限制例如:identifier_sys_var1$charuserNameuser_name50整理課件Java的標(biāo)示符〔續(xù)〕3,命名約定:類(lèi)名,接口名:每個(gè)單詞的首字母應(yīng)該大寫(xiě) classMyFirstClass
interfaceWeapon字段、方法以及對(duì)象:第一個(gè)單詞首字母應(yīng)小寫(xiě),其他單詞首字母大寫(xiě) booleanisWomanvoidsetName(Stringname)常量:全部用大寫(xiě)字母表示。 publicfinalintGREENpublicfinalintHEAD_COUNTJava包〔Package〕:它們?nèi)甲帜感?xiě)。 packagejava.awt.event
51整理課件Java中的關(guān)鍵字關(guān)鍵字列表:abstractbooleanbreakbytecasecatchcharclasscontinuedefaultdodoubleelseextendsenumfalsefinalfinallyfloatforifimplementsimportinstanceofintinterfacelongnativenewnullpackageprivateprotectedpublicreturnshortstaticsuperswitchsynchronizedthisthrowthrowstransienttruetryvoidvolatilewhileJava中truefalse不是關(guān)鍵字,而是boolean類(lèi)型的字面量保存字:const,goto所有的關(guān)鍵字都是小寫(xiě),friendly,sizeof不是java的關(guān)鍵字52整理課件數(shù)據(jù)類(lèi)型根本數(shù)據(jù)類(lèi)型〔primitivetype〕byteshortintlongfloatdoublecharboolean引用數(shù)據(jù)類(lèi)型〔referencetype〕53整理課件Java的根本數(shù)據(jù)類(lèi)型boolean布爾值〔true或false〕byte8-bit整形值short16-bit整形值int32-bit整形值long64-bit整形值char16-bitunicode編碼的字符double64-bit浮點(diǎn)數(shù)值float32-bit浮點(diǎn)數(shù)值54整理課件布爾類(lèi)型-boolean一個(gè)boolean類(lèi)型的變量用來(lái)表示一個(gè)或真或假的關(guān)系一個(gè)boolean類(lèi)型變量的值必須是true或false二者之一
booleanisCorrect=true;55整理課件文本數(shù)據(jù)類(lèi)型—char和Stringchar其實(shí)就是一個(gè)無(wú)符號(hào)的16位整形,其范圍為0~65535,用來(lái)存儲(chǔ)該字符的Unicode編碼值,因?yàn)閁nicode編碼中包含漢字的編碼,所以一個(gè)char類(lèi)型的變量也可以存儲(chǔ)一個(gè)漢字字符。在代碼中直接給出的一個(gè)字符值必須用單引號(hào)括起來(lái)。 charzhChar=‘中’; charenChar=‘a(chǎn)’; charucChar=‘\u0060’;對(duì)某些不方便直接書(shū)寫(xiě)或直接書(shū)寫(xiě)有歧義的字符,java語(yǔ)言規(guī)定用 轉(zhuǎn)義字符給出??梢园裞har類(lèi)型數(shù)據(jù)當(dāng)作整數(shù)數(shù)據(jù)來(lái)操作。例如: intthree=3; charone=’1’; intfour=three+one;56整理課件轉(zhuǎn)義字符轉(zhuǎn)義字符 描述\ddd 1到3位8進(jìn)制數(shù)所表示的字符(ddd)\uxxxx 1到4位16進(jìn)制數(shù)所表示的字符(xxxx)\’ 單引號(hào)字符\’’ 雙引號(hào)字符\\ 反斜杠字符\r 回車(chē)\n 換行\(zhòng)f 走紙換頁(yè)\t 橫向跳格\b 退格Java語(yǔ)言中轉(zhuǎn)義字符都以‘\‘給出常用轉(zhuǎn)義字符列表:57整理課件字符串類(lèi)型----StringString是JDK中定義的一個(gè)類(lèi),不是根本數(shù)據(jù)類(lèi)型一個(gè)String對(duì)象可以用來(lái)存儲(chǔ)多個(gè)字符,在程序中直接給出一個(gè)String值要用雙引號(hào)括起來(lái)StringmyName=“Blues〞;可以使用+運(yùn)算符把多個(gè)String數(shù)據(jù)連接起來(lái),并且還可連接其他類(lèi)型的數(shù)據(jù)例如: intcount=7; System.out.println("Counted"+count+"chars.");58整理課件整形數(shù)據(jù)〔byte,short,intandlong〕三種形式給一個(gè)整形變量直接賦值:
十進(jìn)制、八進(jìn)制和十六進(jìn)制直接給出的值默認(rèn)是int類(lèi)型。長(zhǎng)整形值應(yīng)該在數(shù)字后面跟上‘l’或‘L’標(biāo)示publicvoidtestIntType(){intia=0x55;//十六進(jìn)制
intib=011;//八進(jìn)制
bytebb=0x771;byteba=(byte)0x771;longla=1234567L;//十進(jìn)制
}59整理課件整形數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)方式計(jì)算機(jī)能存儲(chǔ)的值都是二進(jìn)制值,整形數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)方式分兩種情況討論:shorta=57;00000000001110011111
11111100
0111
1,正整數(shù),存儲(chǔ)該數(shù)字的二進(jìn)制原碼。shorta=-57;2,負(fù)整數(shù),存儲(chǔ)該數(shù)字的二進(jìn)制補(bǔ)碼。inta=57;00000000000000000000000000111001inta=-57;1111
1111111111111111
11111100
0111高字節(jié)位低字節(jié)位60整理課件浮點(diǎn)數(shù)據(jù)類(lèi)型—float和double直接在程序中書(shū)寫(xiě)的浮點(diǎn)數(shù)默認(rèn)為dobule類(lèi)型。float類(lèi)型的數(shù)據(jù)占32位長(zhǎng)度〔4Bytes〕double類(lèi)型的數(shù)據(jù)占64位長(zhǎng)度〔8Bytes〕直接表示一個(gè)float類(lèi)型的值必須在數(shù)字后跟‘f’或‘F’直接表示一個(gè)double類(lèi)型的值可以在數(shù)字后跟‘d’或‘D’可以用科學(xué)計(jì)數(shù)法表示,如:123.456e3或123.456E3publicvoidtestFloatType(){floatfa=123.4f;floatfb=12.5E300F;floatfc=(float)12.5E300;doubleda=123D;doubledb=123.456D;doubledc=123.45e301;}61整理課件根本數(shù)據(jù)類(lèi)型的取值范圍TypeBitsBytesMinimumRangeMaximumRangeboolean81Onlytwovalues:trueorfalsebyte81-2727-1short162-215215-1char1620216-1int324-231231-1long648-263263-1float324NotneededNotneededdouble648NotneededNotneeded62整理課件變量的聲明和賦值packagesample;publicclassAssign{publicstaticvoidmain(Stringargs[]){intx,y;//聲明int類(lèi)型變量x和yfloatz=3.414f;//聲明float類(lèi)型變量并賦值doublew=3.1415;//聲明double類(lèi)型變量并賦值booleantruth=true;//聲明boolean類(lèi)型變量并賦值charc;//聲明char類(lèi)型變量cStringstr;//聲明String類(lèi)型的引用Stringstr1=“bye〞;//聲明String類(lèi)型的引用并且實(shí)例化c=‘A’;//給c變量賦值str=“Hioutthere!〞;//給str實(shí)例化x=6;y=1000;}}63整理課件引用數(shù)據(jù)類(lèi)型〔referencetype〕數(shù)組Array,類(lèi)classe,接口interface屬于reference類(lèi)型。reference類(lèi)型的變量是所引用的對(duì)象的內(nèi)存地址。例子:classMyDate{privateintday=1;privateintmonth=1;privateintyear=2000;publicMyDate(intday,intmonth,intyear){...}publicvoidprint(){...}}publicclassTestMyDate{publicstaticvoidmain(String[]args){MyDatemy_birth=newMyDate(22,7,1964);}}64整理課件引用數(shù)據(jù)類(lèi)型〔referencetype〕創(chuàng)立一個(gè)類(lèi)對(duì)象:MyDatemy_birth=newMyDate(22,7,1964);65整理課件引用數(shù)據(jù)類(lèi)型〔referencetype〕兩個(gè)引用變量的賦值將會(huì)產(chǎn)生如下結(jié)果: intx=7; inty=x; MyDates=newMyDate(22,7,1964); MyDatet=s; t=newMyDate(22,12,1964);兩個(gè)變量指向同一個(gè)對(duì)象:66整理課件對(duì)象氣球引用對(duì)象對(duì)象引用對(duì)象對(duì)象就像一個(gè)充滿氫氣的氣球,我們沒(méi)有方法直接去得到它,要想對(duì)它的使用都必須通過(guò)一根連著它的繩子來(lái)訪問(wèn),這根繩子就是對(duì)象的引用。一根繩子同時(shí)只能連著一個(gè)氣球,就像一個(gè)引用同時(shí)只能指向一個(gè)對(duì)象;可以用多根繩子同時(shí)連接一個(gè)氣球,也就是可以有多個(gè)引用同時(shí)指向同一個(gè)對(duì)象;如果某個(gè)氣球沒(méi)有任何繩子連著它,那它就會(huì)飛走,同樣,某個(gè)對(duì)象如果沒(méi)有引用連接它,它就會(huì)成為垃圾,等著被java的垃圾收集器回收;如果某根繩子沒(méi)有連接任何氣球,那么它就是一個(gè)空引用,對(duì)它的訪問(wèn)沒(méi)有意義。同樣,某個(gè)引用如果沒(méi)有指向?qū)ο螅敲磳?duì)它的訪問(wèn)將會(huì)拋出NullPointerException引用null67整理課件本章總結(jié)
在這一章中,我們討論了以下問(wèn)題:不同類(lèi)型的注釋標(biāo)示符和關(guān)鍵字根本數(shù)據(jù)類(lèi)型引用類(lèi)型對(duì)象的概念68整理課件練習(xí)1,寫(xiě)一個(gè)程序,要求定義出boolean,int,char,double,float,String類(lèi)型的變量并賦初值,然后將這些值輸出出來(lái)。2,程序中定義有如下語(yǔ)句,畫(huà)出這些整形值在內(nèi)存空間中的存儲(chǔ)狀態(tài)。inta=74;intb=-132;intc=0x2B8F;3,以下哪些賦值語(yǔ)句是錯(cuò)誤的:(1)byteb=0x175;(2)inti=0x27f;(3)charc=123;(4)inta=‘真’;(5)floatf=12.345E2;(6)booleanf=0;69整理課件練習(xí)
4,判斷以下語(yǔ)句中的a和b的值是否相等:(1)inta=0;intb=‘0’;(2)inta=0;charb=‘\u0000’;(3)inta=123;charb=‘\u007B’;(4)inta=0x123;charb=123;(5)inta=3+‘5’;charb=’8’;(6)inta=‘3’+’5’;charb=‘8’;(7)chara=‘\u0000’;charb=‘0’;70整理課件Module3表達(dá)式及流程控制語(yǔ)句71整理課件本章目標(biāo)Java的運(yùn)算符根本數(shù)據(jù)類(lèi)型的賦值布爾表達(dá)式選擇結(jié)構(gòu)(ifelse,switch)循環(huán)結(jié)構(gòu)〔while,do…while,for〕使用continue和break進(jìn)行循環(huán)控制72整理課件常用運(yùn)算符列表序號(hào)描述運(yùn)算符結(jié)合性1括號(hào)和引用()[]。左右2單目運(yùn)算符++--!~右左3算術(shù)運(yùn)算符*/%+-左右4關(guān)系運(yùn)算符>>=<<===!=左右5邏輯運(yùn)算符&&||&|左右6位運(yùn)算符<<>>>>>&|^左右7條件運(yùn)算符?:/8賦值運(yùn)算符=+=-=*=/=%=>>=>>>=<<=&=|=^=右左73整理課件算術(shù)運(yùn)算符說(shuō)明:Java對(duì)“+〞運(yùn)算符進(jìn)行了擴(kuò)展,使它能夠進(jìn)行字符串的連接,如“abc〞+“de〞,得到串“abcde〞++i,--i在使用i前,先使i的值改變i++,i--在使用i后,再改變i的值 74整理課件關(guān)系運(yùn)算符說(shuō)明:Java中,任何數(shù)據(jù)類(lèi)型的數(shù)據(jù)〔包括根本類(lèi)型和引用類(lèi)型〕都可以通過(guò)==或!=來(lái)比較是否相等(這與C、C++不同)。關(guān)系運(yùn)算的結(jié)果返回true或false,而不是C、C++中的1或0。
75整理課件布爾邏輯運(yùn)算符
邏輯運(yùn)算符 AND〔&&〕、OR〔||〕以及NOT〔!〕能生成一個(gè)布爾值〔true或false〕說(shuō)明:只可將AND,OR或NOT應(yīng)用于布爾值。不可將一個(gè)非布爾值當(dāng)作布爾值在邏輯表達(dá)式中使用例如:以下是非法的。 inti=1,j=2; i&&j i||j !i76整理課件布爾邏輯運(yùn)算符說(shuō)明:對(duì)浮點(diǎn)數(shù)字的比較是非常嚴(yán)格的。短路運(yùn)算:1、a&&b&&c2、a||b||c3、x=y=1a=5,b=3,c=2,d=1(x=a<b)&&(y=c<d)x,y=?77整理課件位運(yùn)算符運(yùn)算符用法描述~~op按位取反&op1&op2按位與|op1|op2按位或^op1^op2按位異或>>op1>>op2op1右移op2位<<op1<<op2op1左移op2位>>>op1>>>op2op1無(wú)符號(hào)右移op2位78整理課件位運(yùn)算符〔~,&,|,^〕79整理課件位運(yùn)算符〔>>,>>>,<<〕說(shuō)明: >>:將一個(gè)數(shù)的各二進(jìn)制位全部右移假設(shè)干位,移到右端的低位被舍棄,最高位那么移入原來(lái)高位的值例如:a=00110111,那么a>>2=00001101 b=11010011,那么b>>2=11110100 右移一位相當(dāng)于除2取商 例如:128>>1returns128/2=64 256>>4returns256/16=16 -256>>4returns-256/16=-16>>>:一個(gè)數(shù)的各二進(jìn)制位無(wú)符號(hào)右移假設(shè)干位,與運(yùn)算符>>相同,移出的低位被舍棄,但不同的是最高位都補(bǔ)0。如:a=00110111,那么a>>>2=00001101 b=11010011,那么b>>>2=0011010080整理課件位運(yùn)算符說(shuō)明: <<:用來(lái)將一個(gè)數(shù)的各二進(jìn)位全部左移假設(shè)干位。高位左移后溢出舍棄,低位補(bǔ)0。 例如: a=00001111,那么a<<2=00111100。 在不產(chǎn)生溢出的情況下,左移一位相當(dāng)于乘2 128<<1returns128*2=256 16<<2returns16*2*2=6481整理課件類(lèi)型轉(zhuǎn)換根本數(shù)據(jù)類(lèi)型和引用類(lèi)型的數(shù)據(jù)都可以轉(zhuǎn)換類(lèi)型,但這種轉(zhuǎn)換是有限制的類(lèi)型轉(zhuǎn)換分為兩種:自動(dòng)類(lèi)型轉(zhuǎn)換(隱含轉(zhuǎn)換)和強(qiáng)制類(lèi)型轉(zhuǎn)換(顯式轉(zhuǎn)換)隱含類(lèi)型轉(zhuǎn)換發(fā)生在把一個(gè)子類(lèi)型賦給一個(gè)超類(lèi)型時(shí)顯式類(lèi)型轉(zhuǎn)換有一定的限制82整理課件根本數(shù)據(jù)類(lèi)型轉(zhuǎn)換序列charbyteshortintdoublefloatlong說(shuō)明:1,在本圖中,順著箭頭方向的類(lèi)型轉(zhuǎn)換可以自動(dòng)進(jìn)行,逆箭頭方向的轉(zhuǎn)換或無(wú)箭頭類(lèi)型之間的轉(zhuǎn)換必須強(qiáng)制轉(zhuǎn)換。2,能將A類(lèi)型變量自動(dòng)轉(zhuǎn)換成B類(lèi)型變量的前提條件是這種轉(zhuǎn)換不會(huì)造成數(shù)據(jù)和精度的喪失,即A類(lèi)型的取值范圍是B類(lèi)型的取值范圍的子集。83整理課件類(lèi)型轉(zhuǎn)換的例子packagesample;publicclassCastingTest{publicvoidimplictCasting(){bytea=0x60;intia=a;charb='a';intc=b;longd=c;longe=1000000000L;floatf=e;doubleg=f;Strings="hello";Objecto=s;}
publicvoidexplicitCasting(){longl=1000000L;inti=l;//(int)l;doubled=12345.678;floatf=d;//(float)d;Objecto=newString("Hello");Stringstr=o;//(String)o;}}84整理課件流程控制語(yǔ)句1分支語(yǔ)句:if-else,switch-case2循環(huán)語(yǔ)句:for,while,do-while3循環(huán)跳轉(zhuǎn)語(yǔ)句:break,continue,label:85整理課件選擇結(jié)構(gòu)—ifelseif(booleanexpression){codeblock1}else{codeblock2}if(booleanexpression){codeblock}if(booleanexpression1){codeblock1}elseif(booleanexpression2){codeblock2}else{codeblock3}ifelse的語(yǔ)法結(jié)構(gòu)1,根本結(jié)構(gòu)2,省略else分支3,多層嵌套86整理課件選擇結(jié)構(gòu)—switchcaseswitchcase實(shí)現(xiàn)多分支選擇結(jié)構(gòu)的語(yǔ)句: switch(expression){
case整數(shù)值1:語(yǔ)句;break;
case整數(shù)值2:語(yǔ)句;break;
case整數(shù)值3:語(yǔ)句;break;
case整數(shù)值4:語(yǔ)句;break;
case整數(shù)值5:語(yǔ)句;break;
//..
default:語(yǔ)句;
}87整理課件switchcase說(shuō)明說(shuō)明: 1.表達(dá)式expression可以是以下四種根本數(shù)據(jù)類(lèi)型和枚舉 類(lèi)型(byte,short,int,char) 2.case子句中的值必須是常量,而且所有case子句中的值應(yīng)是不同的。 3.case通常與break語(yǔ)句聯(lián)用,以保證多路分支的正確實(shí)現(xiàn),多個(gè)case可以公用一組執(zhí)行語(yǔ)句。88整理課件switchcase應(yīng)用例題:根據(jù)考試成績(jī)的等級(jí)打印出百分制分?jǐn)?shù)段。publicclassGradeLevel{publicstaticvoidmain(Stringargs[]){System.out.println("\n****firstsituation****"); chargrade='C';//normaluse switch(grade){ case'A': System.out.println(grade+"is85~100");break; case'B': System.out.println(grade+"is70~84");break; case'C': System.out.println(grade+"is60~69");break;case'D': System.out.println(grade+"is<60");break;default:System.out.println("inputerror"); }}89整理課件for循環(huán)格式 for(初始表達(dá)式;布爾表達(dá)式;步進(jìn)) {
循環(huán)體語(yǔ)句塊 }說(shuō)明:無(wú)論初始表達(dá)式,布爾表達(dá)式,還是步進(jìn),都可以置空。初始表達(dá)式在整個(gè)循環(huán)過(guò)程中只執(zhí)行一次。
for(inti=0,j=1;i<10&&j!=11;i++,j++) /*bodyofforloop*/;90整理課件while循環(huán)格式:
while(布爾表達(dá)式){循環(huán)體語(yǔ)句塊}
例子:publicclassWhileTest{publicstaticvoidmain(String[]args){doubler=0;while(r<0.99d){r=Math.random();System.out.println(r);}}}91整理課件dowhile循環(huán)格式:do{
循環(huán)語(yǔ)句}while(布爾表達(dá)式);例子:92整理課件break不帶標(biāo)號(hào)的break語(yǔ)句,跳出它所在的循環(huán)語(yǔ)句或switch語(yǔ)句,并從緊跟該循環(huán)語(yǔ)句或switch語(yǔ)句后的第一條語(yǔ)句處執(zhí)行intn=13;booleanflag=true;for(inti=2;i<=n/2;i++){if(n%i==0){flag=false;break;}}System.out.println(n+(flag?〞is〞:〞isnot〞)+〞aprimenumber〞);93整理課件帶標(biāo)號(hào)的break語(yǔ)句: 對(duì)Java來(lái)說(shuō),唯一用到標(biāo)簽的地方是在循環(huán)語(yǔ)句之前 如:label1:循環(huán)語(yǔ)句跳出標(biāo)號(hào)所指定的塊,并從緊跟該塊后的第一條語(yǔ)句處執(zhí)行帶標(biāo)號(hào)的break94整理課件continue不帶標(biāo)號(hào)的continue語(yǔ)句,用來(lái)結(jié)束本次循環(huán),跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行終止條件的判斷,以決定是否繼續(xù)循環(huán)帶標(biāo)號(hào)的continue語(yǔ)句跳轉(zhuǎn)到標(biāo)號(hào)指明的外層循環(huán)中。95整理課件本章總結(jié)在這一章里,我們討論了以下問(wèn)題:實(shí)例變量和局部變量實(shí)例變量的初始化Java語(yǔ)言的運(yùn)算符根本數(shù)據(jù)類(lèi)型和引用類(lèi)型使用if,switch,for,while,do,breakandcontinue來(lái)控制程序的流程96整理課件練習(xí)1.編寫(xiě)程序,判斷給定的某個(gè)年份是否是閏年。閏年的判斷規(guī)那么如下:〔1〕假設(shè)某個(gè)年份能被4整除但不能被100整除,那么是閏年?!?〕假設(shè)某個(gè)年份能被400整除,那么也是閏年。2.給定一個(gè)百分制的分?jǐn)?shù),輸出相應(yīng)的等級(jí)。90分以上A級(jí)80~89B級(jí)70~79C級(jí)60~69D級(jí)60分以下E級(jí)3.編寫(xiě)程序求1+3+5+7+……+99的和值。97整理課件練習(xí)練習(xí)一:利用for循環(huán)打印9*9表?1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81
98整理課件練習(xí):練習(xí)二:求500以內(nèi)的完備數(shù)?〔提示:完備數(shù)就是所有約數(shù)和等于本身的數(shù)6=1+2+3〕練習(xí)三:從命令行接受一個(gè)參數(shù)年份,計(jì)算此年份是否為閏年?練習(xí)四:輸出所有的水仙花數(shù),把謂水仙花數(shù)是指一個(gè)數(shù)3位數(shù),其各各位數(shù)字立方和等于根本身,例如:153=1*1*1+3*3*3+5*5*599整理課件練習(xí)練習(xí)六:求a+aa+aaa+.......+aaaaaaaaa=?其中a為1至9之中的一個(gè)數(shù),項(xiàng)數(shù)也可以指定?
練習(xí)七:求2/1+3/2+5/3+8/5+13/8.....前20項(xiàng)之和?
100整理課件練習(xí)練習(xí)八:利用程序輸出如以下圖形:*************************101整理課件Module4:數(shù)組102整理課件本章目標(biāo)聲明并建立一個(gè)根本類(lèi)型的數(shù)組和引用類(lèi)型的數(shù)組為什么數(shù)組在使用前必須初始化定義并初始化一個(gè)數(shù)組正確使用數(shù)組中的元素創(chuàng)立一個(gè)多維數(shù)組〔存放數(shù)組的數(shù)組〕103整理課件聲明數(shù)組相同的數(shù)據(jù)類(lèi)型元素類(lèi)型按一定的順序排列就構(gòu)成了數(shù)組數(shù)組元素可以為:根本數(shù)據(jù)類(lèi)型某一類(lèi)的對(duì)象〔引用類(lèi)型〕建立java數(shù)組需要以下三個(gè)步驟:聲明數(shù)組創(chuàng)立數(shù)組空間初始化數(shù)組元素104整理課件創(chuàng)立數(shù)組聲明數(shù)組的語(yǔ)法格式有兩種如下:數(shù)組元素類(lèi)型
數(shù)組名[];數(shù)組元素類(lèi)型[]
數(shù)組名;例如:chars[];Pointp[]; 或:char[]s;Point[]p;105整理課件數(shù)組實(shí)例化說(shuō)明: 為數(shù)組開(kāi)辟內(nèi)存空間,在創(chuàng)立數(shù)組空間時(shí)必須為它指明數(shù)組的長(zhǎng)度。 一個(gè)數(shù)組是一個(gè)對(duì)象,所以用new來(lái)創(chuàng)立數(shù)組 語(yǔ)法格式為:
數(shù)組名=new數(shù)組元素類(lèi)型[數(shù)組元素的個(gè)數(shù)]; 例如: int[]MyIntArray; MyIntArray=newint[10];
106整理課件數(shù)組實(shí)例化說(shuō)明: 也可以在創(chuàng)立數(shù)組空間的時(shí)候,同時(shí)將初值給出來(lái) 例如:
int[]MyIntArray={1,2,3,4,5,6,7,8,9};
存儲(chǔ)空間的分配等價(jià)于使用new 根本數(shù)據(jù)類(lèi)型的數(shù)組元素系統(tǒng)會(huì)自動(dòng)初始化為默認(rèn)值〔對(duì)于數(shù)值,默認(rèn)值就是零;對(duì)于char,它是空白字符;而對(duì)于boolean,它卻是false〕。
數(shù)組名是對(duì)數(shù)組對(duì)象的一個(gè)引用。107整理課件創(chuàng)立一個(gè)根本數(shù)據(jù)類(lèi)型的數(shù)組創(chuàng)立一個(gè)根本數(shù)據(jù)類(lèi)型元素的數(shù)組:publicchar[]createArray(){char[]s;s=newchar[26];for(inti=0;i<s.length;i++){s[i]=(char)(‘A’+i);}returns;}108整理課件創(chuàng)立一個(gè)對(duì)象數(shù)組創(chuàng)立一個(gè)對(duì)象數(shù)組:publicPoint[]createArray(){Point[]p;p=newPoint[10];for(inti=0;i<p.length;i++){p[i]=newPoint(i,i+1);}returnp;}109整理課件多維數(shù)組1.定義方式:type維數(shù)arrayName; 例如:int[][]intArray;int[][][]a2;2.分配內(nèi)存空間: 有兩種方法:直接為每一維分配空間,如int[][]a=newint[2][3];inttwoDim[][]=newint[][4];//error分別為每一維分配空間如:int[][]a=newint[2][]; a[0]=newint[3]; a[1]=newint[3];可以為每行設(shè)置為空間大小不同的數(shù)組。如:a[0]=newint[3]; a[1]=newint[5];110整理課件多維數(shù)組說(shuō)明說(shuō)明:Java中多維數(shù)組被看作數(shù)組的數(shù)組。例如二維數(shù)組為一個(gè)特殊的一維數(shù)組,其每個(gè)元素又是一個(gè)一維數(shù)組。3.初始化有兩種方式:先定義數(shù)組,分配空間,然后直接對(duì)每個(gè)元素進(jìn)行賦值在定義數(shù)組的同時(shí)進(jìn)行初始化。如:inta[][]={{2,3},{1,5},{3,4}};111整理課件數(shù)組的拷貝使用System.arraycopy()方法://originalarrayintelements[]={1,2,3,4,5,6};//newlargerarrayinthold[]={10,9,8,7,6,5,4,3,2,1};//copyalloftheelementsarraytothehold//array,startingwiththe0thindexSystem.arraycopy(elements,0,hold,0,elements.length);112整理課件本章總結(jié)在這一章里,我們討論了以下問(wèn)題:如何聲明并建立一個(gè)根本數(shù)據(jù)類(lèi)型的數(shù)組和引用類(lèi)型的數(shù)組為什么數(shù)組在使用前必須實(shí)例化怎樣定義并初始化數(shù)組怎樣知道數(shù)組的元素個(gè)數(shù)怎樣建立一個(gè)多維數(shù)組113整理課件練習(xí)1.定義一個(gè)int型的一維數(shù)組,包含10個(gè)元素,分別賦一些隨機(jī)整數(shù),然后求出所有元素的最大值,最小值,平均值,和值,并輸出出來(lái)。2.定義一個(gè)int型的一維數(shù)組,包含10個(gè)元素,分別賦值為1~10,然后將數(shù)組中的元素都向前移一個(gè)位置,即,a[0]=a[1],a[1]=a[2],…最后一個(gè)元素的值是原來(lái)第一個(gè)元素的值,然后輸出這個(gè)數(shù)組。3.定義一個(gè)int型的一維數(shù)組,包含40個(gè)元素,用來(lái)存儲(chǔ)每個(gè)學(xué)員的成績(jī),循環(huán)產(chǎn)生40個(gè)0~100之間的隨機(jī)整數(shù),將它們存儲(chǔ)到一維數(shù)組中,然后統(tǒng)計(jì)成績(jī)低于平均分的學(xué)員的人數(shù),并輸出出來(lái)。4.〔選做〕承上題,將這40個(gè)成績(jī)按照從高到低的順序輸出出來(lái)。5,〔選做〕編寫(xiě)程序,將一個(gè)數(shù)組中的元素倒排過(guò)來(lái)。例如原數(shù)組為1,2,3,4,5;那么倒排后數(shù)組中的值為5,4,3,2,1。114整理課件練習(xí)6,要求定義一個(gè)int型數(shù)組a,包含100個(gè)元素,保存100個(gè)隨機(jī)的4位數(shù)。再定義一個(gè)int型數(shù)組b,包含10個(gè)元素。統(tǒng)計(jì)a數(shù)組中的元素對(duì)10求余等于0的個(gè)數(shù),保存到b[0]中;對(duì)10求余等于1的個(gè)數(shù),保存到b[1]中,……依此類(lèi)推。7,定義一個(gè)20*5的二維數(shù)組,用來(lái)存儲(chǔ)某班級(jí)20位學(xué)員的5門(mén)課的成績(jī);這5門(mén)課按存儲(chǔ)順序依次為:coreC++,coreJava,Servlet,JSP和EJB。〔1〕循環(huán)給二維數(shù)組的每一個(gè)元素賦0~100之間的隨機(jī)整數(shù)?!?〕按照列表的方式輸出這些學(xué)員的每門(mén)課程的成績(jī)?!?〕要求編寫(xiě)程序求每個(gè)學(xué)員的總分,將其保存在另外一個(gè)一維數(shù)組中?!?〕要求編寫(xiě)程序求所有學(xué)員的某門(mén)課程的平均分。8,完成九宮格程序?9,求一個(gè)3*3矩陣對(duì)角線元素之和10,打印楊輝三角115整理課件Module5:模塊化的程序設(shè)計(jì)----方法的調(diào)用116整理課件方法的概念方法輸入輸出當(dāng)我們要建一棟大樓,我們不需要把一磚一瓦的建立過(guò)程全部寫(xiě)在一個(gè)程序代碼塊里,我們可以把建大樓的工作劃分成假設(shè)干個(gè)功能模塊,讓每一個(gè)模塊完成一局部功能,這樣方便我們對(duì)程序的管理和維護(hù),比方:打地基的方法,建主體的方法,裝修的方法等等。而在我們的主題程序中只需要對(duì)他們?nèi)ヒ来握{(diào)用就可以完成整個(gè)建大樓的工作主方法方法A方法B模塊化的程序設(shè)計(jì)過(guò)程實(shí)際上就是方法之間相互調(diào)用的過(guò)程模塊化的思想:把一個(gè)大的問(wèn)題細(xì)分為假設(shè)干個(gè)小的問(wèn)題方法:完成某一具體功能的封裝的程序模塊117整理課件方法的定義<修飾符><返回值><方法名>([<參數(shù)列表>])[throws<聲明拋出異常類(lèi)型>]{<方法體語(yǔ)句塊>}publicvoidsetName(Stringname)throwsIllegalNameException{…}publicStringgetName(){…}如果一個(gè)方法沒(méi)有明確的返回值,那么它的返回值類(lèi)型必須定義為void構(gòu)造方法沒(méi)有返回值,也不能寫(xiě)void118整理課件模塊化程序設(shè)計(jì)—方法的調(diào)用方法調(diào)用的根本步驟:1,為被調(diào)用方法分配臨時(shí)存儲(chǔ)空間。2,將實(shí)參的值復(fù)制一份傳給形參。3,程序流程跳到被調(diào)用方法中執(zhí)行。4,被調(diào)用方法執(zhí)行完成或遇到return語(yǔ)句,那么程序流程跳回主方法,同時(shí)被調(diào)用方法的臨時(shí)存儲(chǔ)空間被回收。119整理課件publicclassMethodInvoke{publicstaticvoidmain(String[]args){intage=21;addAge(age);System.out.println(“age=“+age);}publicstaticvoidaddAge(inta){a++;System.out.println(“a=“+a);}}方法的調(diào)用(圖解)main()方法addAge()方法age21step1:為被調(diào)用方法分配臨時(shí)存儲(chǔ)空間a21step2:將實(shí)參的值復(fù)制一份傳給形參step3:程序流程跳到被調(diào)用方法中執(zhí)行step4:被調(diào)用方法執(zhí)行完成或遇到return語(yǔ)句,那么程序流程跳回主方法,同時(shí)被調(diào)用方法的臨時(shí)存儲(chǔ)空間被回收22F:\>javaMethodInvokea=22age=21120整理課件練習(xí)1,寫(xiě)一個(gè)方法,求1+3+5+7+…的前n項(xiàng)的和,n通過(guò)方法參數(shù)給定,和值通過(guò)方法返回值返回。2,寫(xiě)一個(gè)方法判斷給定的年份是否是閏年。3,寫(xiě)一個(gè)方法,用來(lái)求一個(gè)整形數(shù)組中的最大元素,方法需要一個(gè)int[]類(lèi)型的參數(shù),返回一個(gè)整形值。4,寫(xiě)一個(gè)方法用來(lái)判斷一個(gè)整數(shù)是否是素?cái)?shù),如果是那么返回true,否那么返回false,在主方法中調(diào)用這個(gè)方法,驗(yàn)證其是否正確。5,寫(xiě)一個(gè)方法用來(lái)生成一個(gè)整形數(shù)組,該方法返回一個(gè)int[]類(lèi)型,需要一個(gè)int型參數(shù),數(shù)組的大小由傳進(jìn)來(lái)的參數(shù)決定。6,要求將第4章練習(xí)7的(1)~(4)步分別用方法實(shí)現(xiàn)。121整理課件Module6:類(lèi)和對(duì)象122整理課件本章目標(biāo)面向?qū)ο缶幊痰母靖拍睿悍庋b、繼承和多態(tài)private和public修飾符對(duì)象的創(chuàng)立和初始化方法的調(diào)用方法的重載和覆蓋this和super關(guān)鍵字理解Java語(yǔ)言中的以下概念:package、import、class、membermethod、field、constructor、override/overload、superclass123整理課件面向?qū)ο蟮母靖拍蠲嫦驅(qū)ο笾饕槍?duì)面向過(guò)程。面向過(guò)程的根本單元是函數(shù)。什么是對(duì)象:EVERYTHINGISOBJECT〔萬(wàn)物皆對(duì)象〕面向?qū)ο蟮挠^點(diǎn):一切皆對(duì)象所有的事物都有兩個(gè)方面:有什么〔屬性〕:用來(lái)描述對(duì)象。能夠做什么〔方法〕:告訴外界對(duì)象有那些功能。124整理課件什么是類(lèi)類(lèi)〔Class〕—抽象的數(shù)據(jù)類(lèi)型,用來(lái)描述某一類(lèi)具有相同特性的對(duì)象。類(lèi)是一種復(fù)雜的數(shù)據(jù)類(lèi)型,它是將不同類(lèi)型的數(shù)據(jù)和與這些數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。這有點(diǎn)像C語(yǔ)言中的結(jié)構(gòu),唯一不同的就是結(jié)構(gòu)沒(méi)有定義所說(shuō)的“數(shù)據(jù)相關(guān)的操作〞,“數(shù)據(jù)相關(guān)的操作〞就是我們平常經(jīng)??吹降摹胺椒è暎虼?,類(lèi)具有更高的抽象性,類(lèi)中的數(shù)據(jù)具有隱藏性,類(lèi)還具有封裝性125整理課件面向?qū)ο蟮膬?yōu)點(diǎn)首先,面向?qū)ο蠓先祟?lèi)看待事物的一般規(guī)律。對(duì)象的方法的實(shí)現(xiàn)細(xì)節(jié)是屏蔽的,只有對(duì)象方法的實(shí)現(xiàn)者了解細(xì)節(jié)。注意區(qū)分:對(duì)象〔本身〕、對(duì)象的實(shí)現(xiàn)者、對(duì)象的調(diào)用者。分析對(duì)象主要從方法開(kāi)始。我們通過(guò)類(lèi)來(lái)看待對(duì)象,類(lèi)是對(duì)象的抽象。126整理課件面向?qū)ο蟮膬?yōu)點(diǎn)其次,采用面向?qū)ο蠓椒梢允瓜到y(tǒng)各局部各司其職、各盡所能。對(duì)象之間的耦合性一定要低〔比方不同硬盤(pán)和不同主板之間的關(guān)系〕。這樣才能使每個(gè)對(duì)象本身做成最好的。對(duì)于對(duì)象的要求:高內(nèi)聚、低耦合,這樣容易拼裝成為一個(gè)系統(tǒng)。實(shí)現(xiàn)高內(nèi)聚就是要最大限度低提高復(fù)用性〔復(fù)用性好是因?yàn)楦邇?nèi)聚〕??蓮?fù)用性是OOP的根底。 對(duì)象的功能越簡(jiǎn)單,復(fù)用性就越好?!矊?duì)象的耦合性弱,復(fù)用性就比較強(qiáng)〕可擴(kuò)展性系統(tǒng)的可插入性,是在系統(tǒng)中參加新的對(duì)象之后的系統(tǒng)穩(wěn)定性。對(duì)象的可替換性,是在系統(tǒng)中替換原有的對(duì)象之后的系統(tǒng)的穩(wěn)定性。127整理課件面向?qū)ο笈c面象過(guò)程區(qū)別比較面向過(guò)程的思想和面向?qū)ο蟮乃枷耄好嫦蜻^(guò)程的思想:Algorithms+DataStructor=Programs面向過(guò)程是先有算法,后有數(shù)據(jù)結(jié)構(gòu)。由過(guò)程、步驟、函數(shù)組成,以過(guò)程為核心;面向?qū)ο蟮乃枷耄阂詫?duì)象為中心,先開(kāi)發(fā)類(lèi),得到對(duì)象,通過(guò)對(duì)象之間相互通信實(shí)現(xiàn)功能oop關(guān)鍵是讓每一個(gè)對(duì)象負(fù)責(zé)執(zhí)行一組相關(guān)的任務(wù).面向?qū)ο笫窍扔袛?shù)據(jù)結(jié)構(gòu),然后再有算法。128整理課件定義類(lèi)publicclassAnimal{Stringname;//屬性intage;//屬性publicAnimal(Stringname,intage){//構(gòu)造方法=name;this.age=age;}publicvoideat(){//方法System.out.println(name+〞eating!!〞);}}[修飾符]class類(lèi)名[extends父類(lèi)名][implements接口1[,接口2…]]{
類(lèi)的定義主體}129整理課件創(chuàng)立一個(gè)對(duì)象〔實(shí)例〕為對(duì)象分配存儲(chǔ)空間為成員變量賦初始值調(diào)用構(gòu)造方法130整理課件構(gòu)造方法方法名跟類(lèi)名相同沒(méi)有返回值類(lèi)型publicclassXyz{//membervariablesgotherepublicXyz(){//setuptheobject.}
publicXyz(intx){//setuptheobjectwithaparameter}}131整理課件封裝Encapsulation隱藏實(shí)現(xiàn)細(xì)節(jié)為所有用戶提供統(tǒng)一界面增強(qiáng)可維護(hù)性132整理課件封裝Encapsulation封裝:一個(gè)對(duì)象的不能直接訪問(wèn)另一個(gè)對(duì)象內(nèi)部的成員,其它對(duì)象的也不能直接訪問(wèn)本類(lèi)的私有成員.a.把數(shù)據(jù)和行為結(jié)合在一個(gè)包中,并對(duì)對(duì)象的使用者隱藏?cái)?shù)據(jù)的實(shí)現(xiàn)過(guò)程。對(duì)象中的數(shù)據(jù)稱為對(duì)象的實(shí)例字段(instancefield),操作數(shù)據(jù)的函數(shù)和過(guò)程稱為對(duì)象的方法(method)。一個(gè)特定對(duì)象就是類(lèi)在實(shí)例字段上有著特定值的某個(gè)實(shí)例。b.實(shí)現(xiàn)封裝的關(guān)鍵在于絕不讓方法直接訪問(wèn)其他類(lèi)的實(shí)例字段。133整理課件數(shù)據(jù)的隱藏packagesample;publicclassDataHiddenTest{publicstaticvoidmain(String[]args){Students=newStudent();="George";//illegals.gender="male";//illegals.age=18;//illegal}}publicclassStudent{privateStringname;privateStringgender;privateintage;publicStudent(){}…}134整理課件this關(guān)鍵字this指向當(dāng)前類(lèi)或?qū)ο髉ublicclassStudent{privateStringname;privateStringgender;privateintage;……
publicvoidsetName(Stringname){=name;}publicStringgetName(){returnname;}
publicvoidsetGender(Stringgender){this.gender=gender;}publicStringgetGender(){returngender;}
publicvoidsetAge(intage){this.age=age;}publicintgetAge(){returnage;}……}135整理課件參數(shù)傳遞根本數(shù)據(jù)類(lèi)型的參數(shù)按值傳遞引用類(lèi)型的參數(shù)按引用傳遞packagesample;publicclassParameterTest{staticvoidincrement(inti){++i;}staticvoidchangeName(Students){s.setName("Larry");}staticvoidchangeStudent(Students){s=newStudent("Mary","female",20);}
publicstaticvoidmain(String[]args){inti=2;System.out.println("beforeincrement()"+i);increment(i);System.out.println("afterincrement()"+i);
Students=newStudent("George","male",18);System.out.println("beforechangeName()"+s);changeName(s);System.out.println("afterchangeName()"+s);
s=newStudent("George","male",18);System.out.println("beforechangeName()"+s);changeStudent(s);System.out.println("afterchangeName()"+s);}}136整理課件方法的調(diào)用----引用傳遞publicclassMethodInvoke2{publicstaticvoidmain(String[]args){Animala1=ne
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 19183.2-2024電氣和電子設(shè)備機(jī)械結(jié)構(gòu)戶外機(jī)殼第2部分:協(xié)調(diào)尺寸
- PB-22-N-4-Hydroxypentyl-3-carboxyindole-metabolite-生命科學(xué)試劑-MCE-7583
- EMPO-生命科學(xué)試劑-MCE-2695
- 二零二五年度自動(dòng)駕駛車(chē)輛測(cè)試與示范運(yùn)營(yíng)合同
- 二零二五年度健康產(chǎn)品銷(xiāo)售折扣與會(huì)員管理系統(tǒng)合同
- 2025年度體育設(shè)施建設(shè)與運(yùn)營(yíng)簽合同授權(quán)委托書(shū)
- 2025年度董事薪酬體系設(shè)計(jì)與聘任合同
- 2025年度荒山開(kāi)發(fā)使用權(quán)出讓合同
- 2025年度林業(yè)保護(hù)駕駛員聘用與巡護(hù)服務(wù)合同
- 二零二五年度船舶船員勞動(dòng)合同及船舶事故應(yīng)急處理合同
- GB/T 19228.1-2024不銹鋼卡壓式管件組件第1部分:卡壓式管件
- 2024年計(jì)算機(jī)二級(jí)WPS考試題庫(kù)380題(含答案)
- (高清版)DZT 0399-2022 礦山資源儲(chǔ)量管理規(guī)范
- 初一英語(yǔ)英語(yǔ)閱讀理解專(zhuān)項(xiàng)訓(xùn)練15篇
- 部編人教版五年級(jí)道德與法治下冊(cè)全冊(cè)課件(完整版)
- 廣西貴港市2023年中考物理試題(原卷版)
- 仁愛(ài)英語(yǔ)八年級(jí)閱讀理解測(cè)試題和答案
- DB11∕T 1875-2021 市政工程施工安全操作規(guī)程
- 傳統(tǒng)節(jié)日春節(jié)英文介紹課件
- 水資源論證報(bào)告
- 實(shí)現(xiàn)結(jié)構(gòu)化:初中語(yǔ)文大單元教學(xué)設(shè)計(jì)的核心
評(píng)論
0/150
提交評(píng)論