版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第1章Java語言概述PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
全套可編輯PPT課件主要內(nèi)容Backtoschool1.1Java語言的特點1.2Java運行與開發(fā)環(huán)境1.3Java程序舉例1.1
Java語言的特點P3Java語言是20世紀(jì)90年代由SunMicrosystems公司開發(fā)的革命性的編程語言Java技術(shù)的通用性、高效性、平臺移植性和安全性,使之成為網(wǎng)絡(luò)計算的理想技術(shù)。Java語言在世界編程語言排行榜中一直處于前兩位Java已經(jīng)成為最流行的編程語言。6.1.1最初是由美國SunMicrosystems公司的JamesGosling等人開發(fā)。語言最初取名為Oak(橡樹)。Java于1995年5月23日正式發(fā)布。Java隨著互聯(lián)網(wǎng)的迅猛發(fā)展而發(fā)展,逐漸成為重要的網(wǎng)絡(luò)編程語言。
Java語言在世界編程語言排行榜中一直處于前兩位。Java的起源6.1.1/tiobe-index/編程語言最新排名6.1.120多年來,Java語言不斷推出新版本,增加新功能。Java語言發(fā)展歷程1995.5.23正式發(fā)布1996Java1.01997Java1.11999J2SEJ2EE發(fā)布2000Java1.32002Java1.42004J2SE52006Java6.02017.9Java92014Java8.02008JavaFX1.02007開放源代碼2011Java7.0Java語言的特點P7Java語言是一種高級編程語言,它具有簡單、結(jié)構(gòu)中立、面向?qū)ο?、可移植、分布式、高性能、多線程、健壯、動態(tài)、安全等特點。Java程序的開發(fā)過程Java語言的特點P8由于Java虛擬機可以運行在不同的操作系統(tǒng)之上,因此同一個字節(jié)代碼文件可以在Windows、SolarisOS、Linux、MacOS等操作系統(tǒng)上運行。通過Java虛擬機,同一個Java程序可以在各種平臺上運行
Java平臺的體系結(jié)構(gòu)P9Java技術(shù)為程序員的軟件開發(fā)提供了多種支持,主要包括:各種開發(fā)工具。如編譯器、解釋器、文檔生成器、以及文件打包工具等。應(yīng)用程序編程接口(ApplicationProgrammingInterface,API)。應(yīng)用程序編程接口包含了對軟件常用功能的支持,涉及到基本數(shù)據(jù)對象、用戶界面、網(wǎng)絡(luò)與安全、XML生成、數(shù)據(jù)庫訪問等眾多方面。目前Java的體系結(jié)構(gòu)已經(jīng)變得相當(dāng)龐大。Sun公司在1998年將Java平臺劃分成J2EE、J2SE、J2ME共3個版本(目前改稱為JavaEE、JavaSE、JavaME),針對不同的市場目標(biāo)和設(shè)備進(jìn)行了定位。JavaEE(JavaPlatform,EnterpriseEdition)的主要目的是為企業(yè)計算提供一個應(yīng)用服務(wù)器的運行和開發(fā)平臺。JavaSE(JavaPlatform,StandardEdition)的主要目的是為臺式機和工作站提供一個開發(fā)和運行平臺。JavaME(JavaPlatform,MicroEdition)主要面向電子消費產(chǎn)品,目的是為電子消費產(chǎn)品提供一個Java的運行平臺,使得Java程序可以在手機、PDA、機頂盒等產(chǎn)品上運行。1.2
Java運行環(huán)境與開發(fā)環(huán)境P10Java提供了一個免費的Java開發(fā)工具集(JavaDevelopmentKits,JDK),編程人員可以利用這些工具來開發(fā)或者調(diào)試Java程序。它是編譯和運行Java程序的必備軟件??蓮腛racle官方網(wǎng)站/免費下載JDK。JVM(JavaVirtualMachine)Java虛擬機。運行字節(jié)碼。JRE(JavaRuntimeEnviroment)
Java運行時環(huán)境。JVM和Java類庫一起構(gòu)成。1.2.1JDK的安裝與環(huán)境變量的配置1.2.1JDK的安裝與環(huán)境變量的配置1.2.1JDK的安裝與環(huán)境變量的配置1.2.1JDK的安裝與環(huán)境變量的配置1.2.1JDK的安裝與環(huán)境變量的配置在彈出的新建系統(tǒng)變量里的變量名中輸入JAVA_HOME,在變量值中輸入JDK的根目錄:C:\ProgramFiles\Java\jdk1.8.0_101。然后點擊確定,返回環(huán)境變量對話框,再次點擊新建按鈕,分別輸入classpath和.;%JAVA_HOME%\lib;,注意,此變量值以英文句點符號開始,以分好結(jié)束。然后點擊確定,返回環(huán)境變量對話框。1.2.1JDK的安裝與環(huán)境變量的配置最后,在系統(tǒng)變量里面找到Path變量,注意,這次是點擊編輯按鈕,在彈出的對話框中的變量值的最后,一定是最后,添加如下字符串:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin。注意,前面第一個是分號。如果沒有Path變量,則添加Path變量,添加步驟和前面一樣,不在重復(fù)。檢驗是否配置成功運行cmd輸入java-version若如圖所示顯示版本信息則說明安裝和配置成功。1.2
Java運行環(huán)境與開發(fā)環(huán)境P18Eclipse是一款開放源代碼的、跨平臺的、基于Java的可擴展集成開發(fā)環(huán)境(IDE)。要使用Eclipse首先需要安裝JDK環(huán)境,然后從Eclipse官方網(wǎng)站(/downloads/)選擇EclipseIDEforJavaDevelopers和對應(yīng)的操作系統(tǒng)進(jìn)行下載。下載完成之后,解壓下載的文件到任意目錄既可完成安裝。1.3
Java程序舉例P20常見的Java程序主要有2類,即Application(應(yīng)用程序)和Servlet(服務(wù)器端小程序)。應(yīng)用程序在計算機中單獨運行Servlet是運行在服務(wù)器端的小程序,它可以處理客戶端傳來的請求(request),然后將處理結(jié)果以響應(yīng)(response)的方式傳回給客戶端。本節(jié)將介紹簡單的Java應(yīng)用程序,關(guān)于服務(wù)器端小程序的內(nèi)容將在網(wǎng)絡(luò)編程中介紹。下面我們先介紹簡單的Java程序,并對其進(jìn)行分析?!纠?-1】要求在命令行窗口顯示“HelloWolrd!”。我們將該文件命名為HelloWorldApp.java,其源程序如下://HelloWorldApp.javapublicclassHelloWorldApp//一個應(yīng)用程序{publicstaticvoidmain(Stringargs[]){System.out.println(″HelloWorld!″);}}1.3
Java程序舉例程序也可寫成如下形式://HelloWorldApp.java
publicclassHelloWorldApp
{//一個應(yīng)用程序
publicstaticvoidmain
(Stringargs[]){System.out.println(″HelloWorld!″);}}
首先把它放到一個名為HelloWorldApp.java的文件中,這里,這文件名應(yīng)和類名相同,而且大小敏感,因為Java解釋器要求公共類必須放在與其同名的文件中。1.3
Java程序舉例publicclassHelloWorldApp{publicstaticvoidmain(Stringargs[]){System.out.println(″HelloWorld!″);
}}
Java解釋器在沒有生成任何實例的情況下,以main()作為入口來執(zhí)行程序。Java程序中可以定義多個類,每個類中可以定義多個方法,但是最多只有有一個公共類,main()方法也只能有一個,作為程序的入口。在main()方法定義中,括號()中的Stringargs[]是傳遞給main()方法的參數(shù),參數(shù)名為args,它是類String的一個實例,參數(shù)可以為0個或多個,多個參數(shù)間用逗號分隔。1.3
Java程序舉例publicclassHelloWorldApp{//一個應(yīng)用程序
publicstaticvoidmain(Stringargs[]){
System.out.println(″HelloWorld!″);}}
在main()方法的實現(xiàn)(大括號內(nèi))中,只有一條語句:
System.out.println(″HelloWorld!″);
它用來實現(xiàn)字符串的輸出,這條語句實現(xiàn)與C語言中的printf語句和C++中cout<<語句相同的功能。另外,//后的內(nèi)容為注釋。程序也可寫成如下形式://HelloWorldApp.javapublicclassHelloWorldApp{//一個應(yīng)用程序
publicstaticvoidmain(Stringargs[]){System.out.println(″HelloWorld!″);
}}在程序中,首先用保留字class來聲明一個新的類,其類名為HelloWorldApp,它是一個公共類(用public修飾)。整個類定義由大括號{}括起來。在該類中定義了一個main()方法,其中public表示訪問權(quán)限,指明所有的類都可以使用這一方法;static指明該方法是一個類方法,它可以通過類名直接調(diào)用;void則指明main()方法不返回任何值。對于一個應(yīng)用程序來說,main()方法是必需的,而且必須按照如上的格式來定義。該文件保存在d:\user\chap01目錄下。然后對它進(jìn)行編譯:
d:\user\chap01>javacHelloWorldApp.java編譯的結(jié)果是生成字節(jié)碼文件HelloWorldApp.class。最后用java解釋器來運行該字節(jié)碼文件:
d:\user\chap01>javaHelloWorldApp
結(jié)果在命令行窗口屏幕上顯示HelloWorld!用Eclipse編寫帶命令行參數(shù)的應(yīng)用程序P28publicclassCommandLine{ publicstaticvoidmain(String[]args){ System.out.println("打印命令行參數(shù)"); for(inti=0;i<args.length;i++){ System.out.println(args[i]); } }}用Eclipse編寫第一個JavaApplication
P29Java程序設(shè)計第2章Java程序設(shè)計基礎(chǔ)PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
主要內(nèi)容Backtoschool2.1標(biāo)識符和關(guān)鍵字2.2常量和變量2.3基本數(shù)據(jù)類型2.4運算符2.5表達(dá)式2.6程序控制語句標(biāo)識符:為程序中的各個元素進(jìn)行命名。一般地,在Java中標(biāo)識符是以字母、下劃線(_)、美元符號($)等其它貨幣符號(如£,¥)開始的一個字符序列,后面可以跟字母、下劃線、美元符號、數(shù)字等字符。Java語言使用Unicode字符集。標(biāo)識符是大小寫敏感的,沒有最大長度的限制,不能和關(guān)鍵字相同。2.1標(biāo)識符和關(guān)鍵字標(biāo)識符總體來說定義標(biāo)識符可以使用的字符包括:大小寫字母、數(shù)字;Unicode字符集中編號大于0xC0的所有字符。凡是用Character.isJavaIdentifierStart()返回true,都可作為首字符,Character.isJavaIdentifierPart()返回true,都可作為標(biāo)識符的一部分。合法的標(biāo)識符:Body,_test,$hello非法標(biāo)識符:
5Test,hello*,world#,class注意:在中文環(huán)境下,可以使用漢字作為標(biāo)識符。例如,int中文=5;練習(xí)題Whichdeclarationsofidentifiersarelegal?$personsTwoUsers*pointthis_endline關(guān)鍵字P35Java不允許對關(guān)鍵字賦予別的含義。所有的關(guān)鍵字都是小寫的,如果被大寫,就不是關(guān)鍵字了。byteshortintlongfloatdoublecharbooleanifelseswitchcasedefaultdowhileforbreakcontinuereturnvoidprivatepublicprotectedfinalstaticabstractsynchronizedvolatiletrycatchfinallythrowthrowsnewextendsimplementsclassinstanceofthissuperfalsetruenullpackageimport關(guān)鍵字所有的關(guān)鍵字都是小寫的。如果被大寫,就不是關(guān)鍵字了。用于數(shù)據(jù)類型的關(guān)鍵字byteshortintlongfloatdoublecharboolean用于流程控制語句的關(guān)鍵字ifelseswitchcasedefaultdowhileforbreakcontinue方法、類型、變量的修飾關(guān)鍵字privatepublicprotectedfinalstaticabstractsynchronizedvolatile異常處理關(guān)鍵字trycatchfinallythrowthrows關(guān)鍵字對象相關(guān)關(guān)鍵字newextendsimplementsclassinstanceofthissuper字面值常量關(guān)鍵字falsetruenull方法相關(guān)關(guān)鍵字returnvoid包相關(guān)關(guān)鍵字packageimport練習(xí)題WhichofthefollowingareJavakeywords?1)NULL2)new3)instanceOf4)wend注釋單行注釋單行注釋以“//”開頭,至該行結(jié)尾,其格式如下://注釋內(nèi)容……多行注釋多行注釋以“/*”開始,遇到“*/”結(jié)束,其格式如下:/*注釋文本
……*/文檔注釋文檔注釋以“/**”開頭,遇到“*/”結(jié)束,在注釋中每行“*”開始。/**注釋文本*注釋文本*……*/2.2常量和變量常量整形常量234,實型常量23.4,字符常量’a’,布爾常量true和false,以及字符串常量“helloworld!”
final關(guān)鍵字finalintMAX=100;finalintMAX_LOOP=5;變量[修飾符]<類型名><變量名>[=<初值>][,<變量名>[=<初值>]….];
inti;intj=5,k=4;作用域分,變量大致可分為:局部變量、類成員變量、方法參數(shù)、異常處理參數(shù)。注意:在一個作用域中,變量名應(yīng)該是唯一的。在一個作用域中,如果有多個同名的變量可以訪問,則按照“鄰近”原則,在當(dāng)前域中定義的變量隱藏其它同名的變量。變量作用域局部變量是在方法內(nèi)部或代碼塊中聲明的變量,它的作用域為它所在的代碼塊,在程序設(shè)計中,以“{……}”為界。類成員變量,它的作用域是整個類。又可以細(xì)分為靜態(tài)變量和實例變量方法參數(shù)的作用域,是它所在的方法異常處理參數(shù)的作用域,是它所在的異常處理部分變量隱藏(按作用域的大小)變量的作用域和使用P44Java程序設(shè)計2.3基本數(shù)據(jù)類型PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
2.3基本數(shù)據(jù)類型兩類:基本數(shù)據(jù)類型(PrimitiveType)和引用類型(ReferenceType)Java的基本數(shù)據(jù)類型都有固定的數(shù)據(jù)位,不隨運行平臺的變化而變化。引用類型都是用類或?qū)ο髮崿F(xiàn)的。布爾類型P47布爾型數(shù)據(jù)類型用關(guān)鍵字boolean表示,只有true和false兩個值例如:booleanb=false;字符類型P48字符類型變量用char表示,在Java虛擬機中一般用16位表示一個char值,范圍為0~65535。字符型變量定義格式如下:charc,c1=‘a(chǎn)’;Java的字符型數(shù)據(jù)不同于整數(shù),但是可以和整數(shù)在一起運算inti=20000;charone=’1’;intj=’a’;//由字符向整數(shù),自動類型轉(zhuǎn)換charc=(char)(i+one+j);字符類型轉(zhuǎn)義字符
描述
\ddd1到3位8進(jìn)制數(shù)所表示的字符(ddd)
\uxxxx1到4位16進(jìn)制數(shù)所表示的字符(xxxx)
\'
單引號字符\"雙引號字符
\\反斜杠
\r回車
\n換行
\f走紙換頁
\t橫向跳格
\b
退格Java提供了轉(zhuǎn)義字符,以反斜杠(\)開頭整數(shù)類型P50十進(jìn)制:用0~9的數(shù)表示,首位不能為0,例如:124,-100;八進(jìn)制:以0開頭,后跟多個0~7之間的數(shù)字,如0134;十六進(jìn)制:以0x或者0X開頭,后跟多個0~9之間的數(shù)字、或A~F之間字母的大小寫形式。a~f或者A-F分別表示10~15,例如,0x23FE,等于十進(jìn)制數(shù)9214。二進(jìn)制:以0b或者0B開頭,后跟多個0~1之間的數(shù)字。數(shù)據(jù)類型的表示范圍P51數(shù)據(jù)類型所占位數(shù)數(shù)的范圍byte8-27
~(27-1)
short16-215~(215-1)int32-231~(231-1)long64-263~(263-1)一個整數(shù)數(shù)字隱含為int型,在表示long型常量時,需要在數(shù)字后面加上后綴L或者l。例如3L表示一個long型的常量,而不是int型常量。浮點類型P52標(biāo)準(zhǔn)計數(shù)法:由整數(shù)部分、小數(shù)點和小數(shù)部分組成,如2.0,345.789??茖W(xué)計數(shù)法:由十進(jìn)制數(shù)、小數(shù)點、小數(shù)和指數(shù)構(gòu)成,指數(shù)部分由字母E或e跟上正負(fù)號的整數(shù)表示,例如,345.789,可以表示成3.45789E+2;數(shù)據(jù)類型所占位數(shù)數(shù)的范圍float(單精度浮點數(shù))323.4e-038~3.4e+038double(雙精度浮點數(shù))641.7e-308~
1.7e+308一個浮點數(shù)隱含為double型。在一個浮點數(shù)后加字母F或f,表示float型。常量值3.45的類型是double;3.45F的類型是float。各類型數(shù)據(jù)間的相互轉(zhuǎn)換自動類型轉(zhuǎn)換從低級到高級發(fā)生自動類型轉(zhuǎn)換。從表達(dá)范圍小的類型向表達(dá)范圍大的類型發(fā)生自動類型轉(zhuǎn)換。不同數(shù)據(jù)類型的轉(zhuǎn)換如下所示:注意:byte,short和char在一起運算時,首先轉(zhuǎn)換為int類型進(jìn)行運算。【例2-1】分析下面程序中的錯誤。byteb1=5;shorts1=6;shorts2;s2=b1+s1;低——————————————————————>高byte,short,char—>int—>long—>float—>double類型轉(zhuǎn)換強制類型轉(zhuǎn)換由高級向低級數(shù)據(jù)類型轉(zhuǎn)換時,需要強制類型轉(zhuǎn)換。例如:
inti=65;
charc;c=(char)i;//把int型變量轉(zhuǎn)換成char型,需要強制類型轉(zhuǎn)換。練習(xí)題Whichofthefollowingarelegalstatements?A)floatf=1/3;B)inti=1/3;C)floatf=1.01;D)doubled=999d;Java程序設(shè)計2.4運算符和表達(dá)式PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
算術(shù)運算符P57運算符用法含義結(jié)合性二元運算符+op1+op2加法左-op1-op2減法左*op1*op2乘法左/op1/op2除法左%op1%op2模運算(求余)左一元運算符++op1正數(shù)右--op1負(fù)數(shù)右++++op1,op1++自增右,左----op1,op1++自減右,左算數(shù)運算符的特點對于二元運算符,運算結(jié)果的數(shù)據(jù)類型一般為兩個操作數(shù)中表達(dá)范圍較大的類型。例如,一個整數(shù)和浮點數(shù)運算的結(jié)果為浮點數(shù)。對于一元運算符,運算結(jié)果的類型與操作數(shù)的類型相同。自增、自減運算符有前綴和后綴兩種形式,當(dāng)是前綴形式(即++、--符號出現(xiàn)在變量的左側(cè))時,對變量實施的運算是“先運算后使用”;當(dāng)是后綴形式(即++、--符號出現(xiàn)在變量的右側(cè))時,對變量實施的運算是“先使用后運算”。運算符的注意事項P59在Java中,"%"(求模運算符)的操作數(shù)可為浮點數(shù),如52.3%10=2.3;Java對"+"運算進(jìn)行了擴展,可作字符串連接運算符,如"ab"+"efd"得"abefd";做"+"運算時,如果一個操作數(shù)是字符串,其它操作數(shù)自動轉(zhuǎn)換成字符串.如:
Strings;s="s:"+4*5;
//結(jié)果是s="s:20";byte,short,char等類型進(jìn)行混合運算時,會先自動轉(zhuǎn)換為int類型再運算。賦值運算符P60<變量名>=<表達(dá)式>inti,j;i=10;j=i+20;擴展賦值運算符運算符示例含義+=count+=3count=count+3-=count-=3
count=count-3*=count*=3
count=count*3/=count/=3
count=count/3%=count%=3count=count%3賦值相容P61如果變量的類型和表達(dá)式的類型是相同的,就可以賦值,稱為類型相同;如果兩者類型不同,并且變量類型比表達(dá)式類型長時,系統(tǒng)會自動將表達(dá)式的結(jié)果轉(zhuǎn)換為較長的類型。如int轉(zhuǎn)換為long,這時也可以賦值,稱為賦值相容;賦值不兼容時,可以使用強制類型轉(zhuǎn)換,其格式如下:(<目標(biāo)類型>)<表達(dá)式>例如:inti=(int)123123123123L;//強制類型轉(zhuǎn)換條件運算符P62(boolean_expr)?true_statement:false_statement;例如:intresult=(sum==0)?100:2*num;位運算符P63所有的數(shù)在Java虛擬機中都會轉(zhuǎn)換為補碼二進(jìn)制表示例如:整數(shù)1表示為補碼二進(jìn)制為
00000000000000000000000000000001(4個字節(jié))整數(shù)-1表示為補碼二進(jìn)制為11111111111111111111111111111111(4個字節(jié))運算符示例含義&Op1&Op2使Op1和Op2按位相與|Op1|Op2使Op1和Op2按位相或~~Op對Op按位取反^Op1^Op2使Op1和Op2按位異或<<
Op1<<Op2使Op1左移Op2位,右補0>>
Op1>>Op2使Op1右移Op2位(左邊補充符號位)>>>
Op1>>>Op2使Op1無符號右移Op2位(左邊始終補添0)練習(xí)題Whatwillbeoutputbythefollowingstatement?System.out.println(-1>>>1);1)0
2)-1
3)1
4)
2147483647Whatwillbeoutputbythefollowingstatement?System.out.println(1<<32);1)1
2)-1
3)32
4)-2147483648注意事項除~為右結(jié)合外,其余為左結(jié)合。操作數(shù)的類型一般為整型或字符型。&,|,^三個運算符可以用于boolean。">>"右移是用符號位來填充右移后留下的空位,">>>"是用零來填充空位.若兩個數(shù)據(jù)的長度不同,如a&b,a為byte型,b為int型,系統(tǒng)首先會將a的左側(cè)24位填滿,若a為正,則填滿0,若a為負(fù),填滿1即進(jìn)行“符號擴充”。關(guān)系運算符P66關(guān)系運算符用來比較兩個值之間的大小,結(jié)果返回布爾值:true或者false。運算符示例含義==Op1==Op2比較兩個數(shù)據(jù)是否相等!=Op1!=Op2比較兩個數(shù)據(jù)是否不等<
Op1<Op2比較一個是否小于另一個>
Op1>Op2比較一個是否大于另一個<=Op1<=Op2比較一個是否小于等于另一個>=Op1>=Op2比較一個是否大于等于另一個邏輯運算符P67邏輯運算,也叫布爾運算符,只能處理布爾類型的數(shù)據(jù),所得結(jié)果也是布爾值。邏輯運算符支持“短路運算”(short-circuit)。xyx&&yx||y!x!ytruetruetruetruefalsefalsetruefalsefalsetruefalsetruefalsefalsefalsefalsetruetrue表達(dá)式P68表達(dá)式是由運算符和操作數(shù)組成的符號序列。它根據(jù)運算符的優(yōu)先級別和結(jié)合性,首先執(zhí)行指定的計算再返回某個值。在對表達(dá)式進(jìn)行運算時,遵循一定的規(guī)則,要按運算符的優(yōu)先級從高到低進(jìn)行,同級的運算符則按從左到右的在表達(dá)式中,為了使表達(dá)式的結(jié)構(gòu)更清晰,可以顯示的用()標(biāo)明運算次序,括號中的表達(dá)式首先被計算。方向進(jìn)行。((x<y)&&(x>10))||(((y>0)&(x<50))|(y>50));運算符的優(yōu)先級高|||||||||||||低
1.[]()++--!~instanceof2new(type)3*/%4+-5>>
>>>
<<6<><=>=7==!=8&9^10|
11&&12||13?:14=+=-=*=/=%=∧=15&=!=<<=>>=>>>=幾個特點賦值運算符的優(yōu)先級最低,因為賦值運算符要使用表達(dá)式的值;關(guān)系運算符的優(yōu)先級比布爾邏輯運算符的優(yōu)先級高;.,[],()等運算符的優(yōu)先級最高;一元運算符的優(yōu)先級也比較高;算術(shù)元算符要比關(guān)系運算符和二元邏輯運算符的優(yōu)先級要高。Java程序設(shè)計2.5程序控制語句PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
2.5
程序控制語句P72if語句if(condition)statement1;elsestatement2;階梯if語句P73if語句switch語句P74
多路分支表達(dá)式expression的計算結(jié)果必須為byte、short、int、char、字符串或者enum類型,每個case語句后的值value必須是與expression類型兼容的一個常量(它必須為一個常量,而不是變量)。重復(fù)的case值是不允許的。while與do-while語句P75當(dāng)它的條件表達(dá)式是true時,while語句重復(fù)執(zhí)行循環(huán)體,循環(huán)體可以是一個語句或者語句塊。for語句P76for語句break語句P78break語句P79continue語句P80強迫一次循環(huán)提前結(jié)束從而進(jìn)行下一次循環(huán)。continue語句P81強迫一次循環(huán)提前結(jié)束從而進(jìn)行下一次循環(huán)。使用Return語句return語句用來明確地從一個方法返回,如果使用return語句返回一個值,其格式如下:return
返回值classReturn{publicstaticvoidmain(Stringargs[]){booleant=true;System.out.println("Beforethereturn.");if(t)
return;System.out.println("Thiswon'texecute.");}}實用案例1P83計算斐波那契(Fibonacci)數(shù)列輸出前40項。該數(shù)列的前兩項都是1,從第3項開始,其后的每一個數(shù)據(jù)項都是前面的兩個數(shù)據(jù)項之和。第3章數(shù)組PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
主要內(nèi)容Backtoschool3.1一維數(shù)組3.2二維數(shù)組和Arrays類初識數(shù)組P87數(shù)組是一組具有相同類型的有序數(shù)據(jù)組成的集合。數(shù)組中的一個數(shù)據(jù)成員稱為數(shù)組元素,通過數(shù)組名+下標(biāo)來唯一確定。每個數(shù)組元素類似于一個普通變量,可以用來保存數(shù)據(jù),所以數(shù)組是有序變量的集合。Java中數(shù)組的元素類型可以是簡單的數(shù)據(jù)類型,也可以是類。3.1一維數(shù)組P88一個數(shù)組的創(chuàng)建需要三個步驟:1.定義數(shù)組數(shù)組元素類型數(shù)組名[];或數(shù)組元素類型[]數(shù)組名;2.生成數(shù)組數(shù)組名=new數(shù)組元素類型[數(shù)組長度];3.初始化數(shù)組使數(shù)組中的各個元素有確定的數(shù)值。定義一維數(shù)組P89數(shù)據(jù)類型數(shù)組名[];或數(shù)據(jù)類型[]數(shù)組名;數(shù)據(jù)類型是指數(shù)組元素的數(shù)據(jù)類型;[]表示定義的變量是一個數(shù)組變量,并且是一維的。例如:inta[];(或int[]a;)//聲明一個一維整型的數(shù)組acharb[];(或char[]b;)//聲明一個一維字符型的數(shù)組bdoublec[];(或double[]c;)//聲明一個一維雙精度實型的數(shù)組c注意:Java定義數(shù)組時,不會為數(shù)組分配存儲空間。因此,數(shù)組聲明時,是不指明長度的。生成一維數(shù)組P90數(shù)組定義只是建立了一種數(shù)組的引用,還必須使用關(guān)鍵字new為其分配內(nèi)存空間。數(shù)組變量名=new數(shù)據(jù)類型[數(shù)組長度]如:chars[];s=newchar[5];也可以在定義數(shù)組的同時為之分配內(nèi)存空間:inttemp[]=newint[10];初始化一維數(shù)組P91可以通過對數(shù)組成員賦值的方式對數(shù)組初始化如:ints[];s=newint[3];s[0]=1; //為第一個元素分配空間s[1]=2; //為第二個元素分配空間s[2]=3; //為第三個元素分配空間也可以將內(nèi)存空間分配,初始化工作放在一條語句中
ints[]={1,2,3};使得s[0]=1,s[1]=2,s[2]=3
此時數(shù)組的長度由給定初值的個數(shù)自動決定。注意:數(shù)組不能整體進(jìn)行賦值。訪問一位數(shù)組P92數(shù)組元素的訪問可通過數(shù)組名加下標(biāo)來實現(xiàn):數(shù)組名[下標(biāo)]如數(shù)組temp:temp[0],temp[1],…,temp[9]
表示分別引用數(shù)組的第1個到第10個元素。注意:數(shù)組的下標(biāo)是從0開始,到數(shù)組長度減1。
數(shù)組長度可以通過“數(shù)組名.length”來獲取。本章案例1P93求一維數(shù)組的最大值及位置。3.2二維數(shù)組和Arrays類P94數(shù)組的下標(biāo)數(shù)也稱為數(shù)組的維數(shù),維數(shù)大于1的數(shù)組叫多維數(shù)組。多維數(shù)組的使用方法基本類似,下面我們以二維數(shù)組為例進(jìn)行分析。二維數(shù)組可看作是特殊的一維數(shù)組,即:二維數(shù)組中每一個元素又是一個一維數(shù)組。利用二維數(shù)組可以更方便地處理表格、空間形式的數(shù)據(jù),如(x,y)坐標(biāo)系中的點。二維數(shù)組的定義與初始化(1)P95二維數(shù)組的定義與一維數(shù)組相似:數(shù)據(jù)類型數(shù)組名[][];
或者
數(shù)據(jù)類型[][]數(shù)組名;可以先定義數(shù)組,再分配內(nèi)存空間,也可以同時進(jìn)行這兩項工作。如:inttemp[][];temp=newint[2][3];inttemp[][]=newint[2][3];//即創(chuàng)建一行數(shù)為2,列數(shù)為3的整數(shù)數(shù)組temp也可將其視為一長度為2的一維數(shù)組,每個數(shù)組成員又是一個長度為3的一維數(shù)組。這些數(shù)組成員按行排列如下:temp[0][0],temp[0][1],temp[0][2],temp[1][0],temp[1][1],temp[1][2],二維數(shù)組的定義與初始化(2)P96可以在定義數(shù)組的同時對其進(jìn)行初始化,格式為:類型名數(shù)組名[][]={{數(shù)據(jù)11,數(shù)據(jù)12,……},{數(shù)據(jù)21,數(shù)據(jù)22,……},……}如:inttemp[][]={{1,2},{3,4},{5,6}}注意:(1)等式右邊大括號內(nèi)嵌套的大括號不能省,它代表數(shù)組的一行;(2)允許每個二維數(shù)組成員的長度不同,如inta[][]={{1,2},{3,4,5},{6,7,8}}(3)系統(tǒng)根據(jù)初始值自動確定數(shù)組長度和內(nèi)存空間大小,如上面數(shù)組a的第二維長度分別為2,3,3。二維數(shù)組的使用P97引用二維數(shù)組元素基本方式為:
數(shù)組名[下標(biāo)1][下標(biāo)2]下標(biāo)1和下標(biāo)2與一維數(shù)組的下標(biāo)要求相同。可以通過length屬性求每一維數(shù)組的長度,如:inttemp[][]=newint[3][5];System.out.println(temp.length);//求二維數(shù)組的長度實際是求它的行數(shù)3System.out.println(temp[0].length);//temp[0]的長度為5對二維數(shù)組元素的引用通常使用嵌套的循環(huán)結(jié)構(gòu)完成。本章案例2P98求二維數(shù)組中各元素的和Arrays類P99為方便數(shù)組的使用,Java在包java.util定義了一個叫Arrays的類。Arrays類提供了多個操作數(shù)組的靜態(tài)方法:statictype[]copyOf(type[]original,intlength)
將original數(shù)組復(fù)制為一個新數(shù)組,其中l(wèi)ength為新數(shù)組的長度。staticintbinarySearch(type[]a,typekey)
使用二分搜索法在數(shù)組a中搜索指定值key;staticbooleanequals(type[]a,type[]b)
比較兩個數(shù)組是否相等;staticvoidfill(type[]
a,type
val)
用一個指定的值val填充數(shù)組a;staticvoidfill(type[]
a,int
fromIndex,int
toIndex,typeval)
與前一個方法類似,但填充時僅僅針對下標(biāo)為fromIndex到toIndex-1的數(shù)組元素賦值為val;staticvoidsort(type[]a)
對數(shù)組a排序;本章案例3P100Arrays類的基本使用本章案例3(續(xù)前)P101定義類定義類的語法格式:[修飾符]class類名{….類體…..}類體可以由多個屬性(成員變量)、方法、構(gòu)造器組成。注意:類的修飾符可以是public、final、abstract或省略這3個。類名只要是合法的標(biāo)識符.一個類里可以包含三種最常見的成員:構(gòu)造器、屬性、方法。沒有順序,可相互調(diào)用?注意:static修飾的成員不能訪問沒有static修飾的成員。定義屬性的格式語法[修飾符]屬性類型屬性名[=默認(rèn)值];修飾符:可以省略,也可以是public,protected,private,static,final,transient(短暫的,不被序列化),volatile(異變的)。類型:基本類型和引用類型屬性名:合法標(biāo)識符默認(rèn)值:可選定義方法的格式語法[修飾符]方法返回值類型方法名(形參列表){….方法體….}
方法中的修飾符可以是public,protected,private,static,final,abstract,其中訪問控制符只能出現(xiàn)一個,abstract,final只能出現(xiàn)其一.返回值類型可以是基本類型和引用類型,如果無返回值,要用void來聲明形參列表,可以由零到多組組成,參數(shù)之間用逗號(“,”)隔開.static是一個特殊的關(guān)鍵字,譯為“靜態(tài)”,所有有static修飾的叫類屬性,類方法,類成員.定義構(gòu)造器的語法格式[修飾符]類名(形參列表){……}修飾符可以是publicprotectedprivate
構(gòu)造器必須和類名相同,形參和方法的形參一樣.構(gòu)造器名:必須和類名相同形參列表:和定義方法形參列表的格式相同注意:構(gòu)造器不能定義返回值類型,也不能用void,但究竟有返回值沒?如果類中沒有定義構(gòu)造器,系統(tǒng)將為它提供一個默認(rèn)的構(gòu)造器,系統(tǒng)提供的構(gòu)造器總是沒有參數(shù)的。使用類:定義變量,創(chuàng)建對象,調(diào)用方法或變量對象的產(chǎn)生和使用創(chuàng)建對象的根本途徑就是構(gòu)造器,所以創(chuàng)建對象通過關(guān)鍵字new加上對應(yīng)的構(gòu)造器即可.如果訪問權(quán)限允許,類里定義的屬性和方法可以通過類或?qū)嵗齺碚{(diào)用,有static修飾的訪求和屬性,既可通過類來調(diào)用,也可以通過實例來調(diào)用.對象、引用和指針Personp=newPerson();,這行代碼創(chuàng)建了一個Person實例,也被稱為對象,這個對象被賦給了p變量;也就是說引用型變量里存放的僅僅是一個引用(棧內(nèi)存),它指向?qū)嶋H的對象(堆內(nèi)存);堆內(nèi)存里的對象可以有多個引用,如果堆內(nèi)存中的對象沒有任何變量指向它,程序?qū)o法訪問該對象,即為垃圾。P=0x12345678;對象的this引用this關(guān)鍵字總是指向調(diào)用該方法的對象.1.構(gòu)造器中引用該構(gòu)造器執(zhí)行初始化的對象2.在方法中引用調(diào)用該方法的對象在方法里的this代表調(diào)用該方法的實例對象;Java允許對象的一個成員直接調(diào)用另一個成員,可以省略this前綴;注:this不能用在有static修飾的方法中,包括publicstaticmain方法.即:靜態(tài)成員不能直接訪問非靜態(tài)成員。this不屬于類成員,不可以獲取,但可以返回。成員變量和局部變量成員變量指的是在類范圍內(nèi)(方法外,代碼塊外)定義的變量;局部變量指的是在一個方法內(nèi)定義的變量。不管是成員變量還是局部變量都遵守相同的命名規(guī)則。成員變量分為類變量和實例變量.對于類變量無論通過類還是對象來訪問都是訪問同一個對象,只要一個對象改變了類變量,那么其他對象對應(yīng)的類變量也改變了;成員變量不用顯式初始化,只要定義了一個類變量或?qū)嵗兞?系統(tǒng)默認(rèn)進(jìn)行初始化。局部變量局部變量可分為三種:形參;方法局部變量;代碼塊局部變量。與成員變量不同的是除了形參外,其他局部變量都必須顯式地初始化。局部變量同名一個類里不能定義兩個同名的成員變量;一個方法里不能定義兩個同名的方法局部變量,方法局部變量與形參也不能同名;同一個方法中不同代碼塊內(nèi)的代碼塊局部變量可以同名;如果先定義代碼塊局部變量,后定義方法局部變量,前面定義的代碼塊局部變量與后面定義的方法局部變量可以同名,反過來不能同名;Java里允許局部變量和成員變量重名。這樣局部變量會覆蓋成員變量,這時通過this來調(diào)用實例的屬性.成員變量的初始化當(dāng)類被加載時,類成員就在內(nèi)存中分配了一塊空間。當(dāng)對象被創(chuàng)建時,實例成員就在內(nèi)存中分配了內(nèi)存空間。實例變量與實例共存亡;類變量與類本身共存亡。局部變量的運行機制局部變量定義后,必須經(jīng)過顯式初始化后才能使用,系統(tǒng)不會為局部變量執(zhí)行初始化。意味著初始化時才為局部變量分配內(nèi)存;局部變量僅在方法內(nèi)有效。當(dāng)方法執(zhí)行完成時,局部變量便會自動銷毀??偨Y(jié):變量的使用規(guī)則?使用構(gòu)造器執(zhí)行初始化構(gòu)造器最大的用處就是在創(chuàng)建對象時執(zhí)行初始化,系統(tǒng)會默認(rèn)的進(jìn)行初始化。構(gòu)造器的訪問權(quán)限:public、protected和private;如果程序員沒有Java類提供任何構(gòu)造器,則系統(tǒng)會為這個類提供一個無參的構(gòu)造器。一旦程序員提供了自定義的構(gòu)造器,遇系統(tǒng)不再提供默認(rèn)的構(gòu)造器。如何需要保留系統(tǒng)的默認(rèn)構(gòu)造器呢?構(gòu)造器的重載構(gòu)造器的重載和方法的重載一樣,(兩同一不同),都是方法名相同,形參列表不相同。系統(tǒng)根據(jù)傳入的實參列表來決定調(diào)用哪個構(gòu)造器;如果類中包含多個構(gòu)造器,其中一個構(gòu)造器的執(zhí)行體完全包含另一個構(gòu)造器的執(zhí)行體,則可以:在構(gòu)造器中可通過this來調(diào)用另外一個重載的構(gòu)造器。如this(param1,param2…);注意:只能在構(gòu)造器中使用;只能作為第一條語句;不能有遞歸構(gòu)造器的調(diào)用。初始化塊使用初始化塊:初始化塊由大括號括起{…},只能由static修飾。[修飾符]{
//初始化塊的可執(zhí)行性代碼}初始化塊和構(gòu)造器:初始化塊總在構(gòu)造器之前執(zhí)行,初始化塊不能接受形參。靜態(tài)初始化塊用static修飾的初始化塊為靜態(tài)初始化塊,由于是靜態(tài)的,所以是屬于類,當(dāng)類加載時,就執(zhí)行靜態(tài)初始化塊,但執(zhí)行一個子類時,最先執(zhí)行其最頂層父類的靜態(tài)初始化,初始化塊是屬于實例的。只要創(chuàng)建一次對象,初始化塊就執(zhí)行一次。方法的詳解方法的所屬性一旦將一個方法定義在一個類里,如果用static修飾了,這個方法屬于這個類,否則屬于這個類的對象.方法不能獨立執(zhí)行,必須要有調(diào)用者.(如:類.方法、對象.方法)方法不能獨立定義,只能定義在類里.方法要么屬于一個類,要么屬于一個對象方法的參數(shù)傳遞機制傳遞方式只有一種:值傳遞.所謂值傳遞,就是將實際參數(shù)值的副本傳入方法內(nèi),而參數(shù)本身不會受到任何影響。疑問:如果參數(shù)是引用類型呢?形參個數(shù)可變的方法如果在定義方法時,在最后一個參數(shù)的類型后增加三點…,則表明該形參接受多個參數(shù)值,多個參數(shù)值被當(dāng)成數(shù)組傳入.長度可變的形參只能位于最后一個參數(shù),并且一個方法里只能有一個可變長度的參數(shù).遞歸遞歸就是在方法中再次調(diào)用自己。遞歸一定要向已知方向遞歸.否則可能會進(jìn)入無窮遞歸,即死循環(huán)。方法的重載Java允許在一個類里定義多個同名方法,只要形參列表不同即可.所以方法的重載只要滿足兩個條件(兩同一不同):1.同一個類中,方法名相同;2.形參不同。和返回值類型無關(guān).所以在調(diào)用這些方法時要傳入不同的參數(shù)值.封裝理解封裝:封裝是面向?qū)ο蟮娜筇卣髦?。它指的是將對象的狀態(tài)信息隱藏在對象內(nèi)部,不允許外部程序直接訪問對象內(nèi)部信息,而是通過該類所提供的方法來實現(xiàn)對內(nèi)部信息的操作和訪問。封裝包含兩方面含義:(1)合理隱藏。把對象的成員變量和實現(xiàn)細(xì)節(jié)隱藏起來,不允許外部直接訪問。(2)合理暴露。把方法暴露出來,讓方法來控制對這些成員變量進(jìn)行安全的訪問和操作。把該隱藏的隱藏起來,把該暴露的暴露出來,這兩個方面都需要通過Java提供的訪問控制符來實現(xiàn)。3個訪問控制符:private、protected和public,分別代表3個訪問控制級別,另外還有一個不加任何訪問控制符的訪問控制級別(default)。private私有的。在同一個類里能被訪問。default默認(rèn)的。包訪問權(quán)限protected受保護(hù)的。子類中也能訪問public公共的。在任何地方都可以訪問使用訪問控制符privatedefaultprotectedpublic訪問控制級別由小到大外部類只能有兩種訪問控制級別:public和默認(rèn),外部類不能使用private和protected修飾,因為外部類沒有處于任何類的內(nèi)部,因此private和protected訪問控制符對外部類沒有意義。使用public修飾的外部類可以被所有類使用,如聲明變量、創(chuàng)建實例;不適用任何訪問控制符修飾的外部類只能被同一包中的其他類使用。使用訪問控制符修飾外部類類里的絕大部分成員變量都應(yīng)該使用private修飾,只有一些static修飾的、類似全局變量的成員變量,才可能考慮使用public修飾;如果某個類主要用作其他類的父類,該類里包含的大部分方法可能僅希望被其子類重寫,而不想被外界直接調(diào)用,則用protected修飾;希望暴露出來給其他類自由調(diào)用的方法應(yīng)該使用public修飾,如類的構(gòu)造器,從而允許在其他地方創(chuàng)建該類的實例。使用訪問控制符的基本原則package包(package)的來源。package打包格式:package包名;放在源文件頂端,一個源文件只能指定一個包,只能有一條package語句,該源文件中可以定義多個類,這些類將全部位于該包下。包機制的兩個方面的保證。1.源文件里要使用package語句指定包。2.class文件必須放在對應(yīng)的路徑下。如果沒有顯式指定package語句,則處于默認(rèn)包下。同一個包下的類可以自由訪問,不需要添加包前綴,不同包中使用類應(yīng)該加包前綴,如:包名.類名;包里面可以有子包,如:packagebao.bao1.bao2;如果父包中的類需要使用子包中的類,則必須使用子包的全名,而不能省略父包部分。import為了簡化編程,引入import,import可以向某個Java文件中導(dǎo)入指定包層次下某個類或全部類,import語句在package語句后、類定義之前;一個源文件可以包含多個import語句。importpackage.subpackage…classname;//單個類importpackage.subpackage…*;//全部類,這個*只能代表類,不能代表包。import引入包格式,分為兩種:非靜態(tài)導(dǎo)入,導(dǎo)入的是包下所有的類。如:importpackage.subpackage.(classname|*);靜態(tài)導(dǎo)入,導(dǎo)入的是類的靜態(tài)變量或靜態(tài)方法。如:importstaticpackage.className.(fieldname|methodname|*);package語句//0-1個import|importstatic語句//0-N個publicclassDefinition|interfaceDefinition|enumDefinition//0-1個classDefinition|interfaceDefinition|enumDefinition
//0-N個Java源文件大體結(jié)構(gòu)Java的常用包java.lang.*;//核心類,string、math、system等java.util.*;//工具類/接口、集合框架類/接口.*;//網(wǎng)絡(luò)編程有關(guān)的java.io.*;//輸入輸出流java.text.*;//java格式化有關(guān)的類java.sql.*;//JDBC數(shù)據(jù)庫編程java.awt.*;//圖形界面java.swing.*;//圖形界面繼承子類繼承父類的語法格式如下:[修飾符]
classsubclassextendssuperclass{ //類定義部分}子類擴展了父類,將可以獲得父類的全部屬性和方法,但不能獲得父類構(gòu)造器!Java里的繼承都是單繼承,也就是只能有一個直接的父類,可以有n個間接父類。自定義的java類默認(rèn)繼承java.lang.Object類。重寫父類的方法方法的重寫要遵循“兩同兩小一大”原則:指的是:方法名相同,形參列表相同。返回值類型更小或相同,拋出的異常更小或相同,訪問控制權(quán)限要更大。注意:重寫方法和被重寫方法要么都是類方法,要么都是實例方法,不能一個是類方法,一個是實例方法。疑問:子類如何訪問父類中被子類重寫的方法?類方法呢?private方法呢?重載overload和重寫override的區(qū)別?父類實例的super限定通過關(guān)鍵字super來調(diào)用父類的方法或?qū)傩?。super是Java提供的一個關(guān)鍵字,super用于限定該對象調(diào)用它從父類繼承得到的實例變量或方法。super和this一樣,都不能出現(xiàn)在static修飾的方法中。疑問:系統(tǒng)查找方法中變量的順序?疑問:如果被覆蓋的是類變量呢?子類定義了同名變量,將隱藏父類中的變量。注意不是完全覆蓋,因此創(chuàng)建子類對象時,依然會為父類中定義的、被隱藏的變量分配內(nèi)存空間。在子類中調(diào)用被隱藏的父類變量publicclassTest{publicstaticvoidmain(Stringargs[]){System.out.println(newJi().b);
}}classAnimal{intage=6;}classBirdextendsAnimal{booleanage=true;intx=super.age;}classJiextendsBird{floatage=5.23f;Birdbd=this;intb=((Animal)bd).age;}super調(diào)用父類的構(gòu)造器子類不會獲得父類的構(gòu)造器,但子類構(gòu)造器里面可以調(diào)用父類構(gòu)造器的初始化代碼;在構(gòu)造器中調(diào)用本類重載的構(gòu)造器用this,在子類構(gòu)造器中調(diào)用父類構(gòu)造器用super;使用super調(diào)用父類構(gòu)造器必須出現(xiàn)在子類構(gòu)造器執(zhí)行體的第一行;子類構(gòu)造器總會調(diào)用父類構(gòu)造器。如果子類構(gòu)造器沒有顯式使用super調(diào)用父類構(gòu)造器,子類構(gòu)造器默認(rèn)會調(diào)用父類無參數(shù)的構(gòu)造器。子類調(diào)用父類的構(gòu)造器的幾種情況子類構(gòu)造器執(zhí)行體第一行使用super顯式調(diào)用父類構(gòu)造器;子類構(gòu)造器的執(zhí)行體第一行代碼使用this顯式調(diào)用本類中重載的構(gòu)造器;子類構(gòu)造器執(zhí)行體中既沒有super調(diào)用,也沒有this調(diào)用,系統(tǒng)將會執(zhí)行子類構(gòu)造器之前,隱式調(diào)用父類無參數(shù)的構(gòu)造器。(這里可能有問題!)子類和父類的構(gòu)造器執(zhí)行順序創(chuàng)建一個子類實例時,總會先調(diào)用最頂層父類的構(gòu)造器,然后依次向下執(zhí)行,最后才執(zhí)行本類的構(gòu)造器。如果某個父類通過this調(diào)用了同類中重載的構(gòu)造器,則會依次執(zhí)行此父類的多個構(gòu)造器。不管子類如何調(diào)用父類構(gòu)造器,當(dāng)調(diào)用子類構(gòu)造器來初始化子類對象時,父類構(gòu)造器總會在子類構(gòu)造器之前執(zhí)行;不僅如此,執(zhí)行父類構(gòu)造器時,系統(tǒng)會再次上溯執(zhí)行其父類構(gòu)造器…因此,最先執(zhí)行的總是java.lang.Object類的構(gòu)造器。(但為啥感覺不到呢?)classCreature{ publicCreature(){ System.out.println("Creature無參數(shù)的構(gòu)造器"); }}classAnimalextendsCreature{ publicAnimal(Stringname){ System.out.println("Animal帶一個參數(shù)的構(gòu)造器,"+"該動物的name為"+name); } publicAnimal(Stringname,intage){
this(name); System.out.println("Animal帶兩個參數(shù)的構(gòu)造器,"+"其age為"+age); }}publicclassWolfextendsAnimal{ publicWolf() {
super("灰太狼",3); System.out.println("Wolf無參數(shù)的構(gòu)造器"); } publicstaticvoidmain(String[]args) { newWolf(); }}子類和父類的構(gòu)造器執(zhí)行順序(示例代碼)Java程序設(shè)計4.9多態(tài)性PPT模板下載:/moban/行業(yè)PPT模板:/hangye/節(jié)日PPT模板:/jieri/PPT素材下載:/sucai/PPT背景圖片:/beijing/PPT圖表下載:/tubiao/優(yōu)秀PPT下載:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/資料下載:/ziliao/PPT課件下載:/kejian/范文下載:/fanwen/試卷下載:/shiti/教案下載:/jiaoan/
5.2Java的多態(tài)性
多態(tài)(Polymorphism)的意思就是用相同的名字來定義不同的方法。在Java中,普通類型的多態(tài)為重載,這就意味著可以使幾個不同的方法使用相同的名字,這些方法以參數(shù)的個數(shù)不同、參數(shù)的類型不同等方面來進(jìn)行區(qū)分,以使得編譯器能夠進(jìn)行識別。也可以這樣講,重載是同一個方法具有不同的版本,每個版本之間在參數(shù)特征方面有差異。重載是Java實現(xiàn)多態(tài)性的方式之一。
5.2Java的多態(tài)性例如:family()方法可以有三個版本,如下:
family(){}family(Stringch){address=ch;}family(Stringch,floatn){address=ch;pay=n;}
這些方法并存于程序中,編譯時,編譯器根據(jù)實參的類型和個數(shù)來區(qū)分從而調(diào)用那個方法。如果這些方法作為函數(shù)或過程同時出現(xiàn)在其它語言的程序中,如C,那將導(dǎo)致災(zāi)難性的錯誤。5.2Java的多態(tài)性構(gòu)造方法重載的例子classperson{Stringname="Johnson";//姓名
intage=45;//年齡
person(){}
person(Stringa){name=a;}
person(Stringa,intb){nam
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機電設(shè)備維修工安全生產(chǎn)規(guī)范模擬考核試卷含答案
- 水泥制成工班組協(xié)作水平考核試卷含答案
- 中藥炮炙工崗前實操掌握考核試卷含答案
- 杜美絲制造工崗前履職考核試卷含答案
- 2025年鑄鐵及相關(guān)金屬制衛(wèi)生、廚房器具、餐具合作協(xié)議書
- 2025年雕刻雕銑設(shè)備控制系統(tǒng)合作協(xié)議書
- 2025廣東深圳市人才流動中心有限公司招聘筆試筆試歷年參考題庫附帶答案
- 2026年智能保溫取餐柜項目項目建議書
- 2025年江蘇省無錫市中考語文真題卷含答案解析
- 牛年介紹教學(xué)
- 消化內(nèi)鏡ERCP技術(shù)改良
- 云南師大附中2026屆高三1月高考適應(yīng)性月考卷英語(六)含答案
- 2026湖北隨州農(nóng)商銀行科技研發(fā)中心第二批人員招聘9人筆試備考試題及答案解析
- 騎行美食活動方案策劃(3篇)
- 2026年上海市松江區(qū)初三語文一模試卷(暫無答案)
- 石化企業(yè)環(huán)保培訓(xùn)課件
- 2026年呂梁職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試備考試題帶答案解析
- 清華大學(xué)教師教學(xué)檔案袋制度
- 2025年新疆師范大學(xué)輔導(dǎo)員招聘考試真題及答案
- 人教版九年級物理上學(xué)期期末復(fù)習(xí)(知識速記+考點突破+考點練習(xí)題)含答案
- 電梯更新改造方案
評論
0/150
提交評論