




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
JAVA語言程序設(shè)計第一章
計算機語言概述
第一節(jié)程序設(shè)計語言第二節(jié)語言翻譯程序第三節(jié)Java虛擬機與運行環(huán)境第四節(jié)Java程序的運行第五節(jié)Java程序的開發(fā)、執(zhí)行流程小結(jié)習(xí)題Basic、Fortran語言擅長描述問題解決的過程,也就是說,描述怎樣解決問題。人們把這些語言稱為面向過程的語言。1.1程序設(shè)計語言
低級程序設(shè)計語言程序設(shè)計語言:高級程序設(shè)計語言機器語言匯編程序設(shè)計語言Basic語言Fortran語言Prolog語言C++Java語言Prolog語言:面向邏輯的語言。Java、C++語言:面向?qū)ο蟮恼Z言,第一種可以編寫普通的應(yīng)用程序也可以編寫專用于internet或intrant應(yīng)用程序的語言。有人說:Java是網(wǎng)絡(luò)上的世界語。1.1程序設(shè)計語言
一次編譯,到處運行1完全面向?qū)ο?移植性3穩(wěn)定性4簡單性5高性能性6動態(tài)特性7分布式1.1程序設(shè)計語言Java語言的特點1.2語言翻譯程序X86機器碼Powerpc機器碼MIPS機器碼ALPHA機器碼MIPS機器ALPHA機器Powerpc機器X86機器“一次編譯,到處運行”原理Java虛擬機(JVM-JavaVirtualMachine)是什么:虛擬機是運行在主操作系統(tǒng)頂層的軟件層,是一種虛擬計算機。作用:使得一臺實際的機器能夠運行Java字節(jié)碼程序。Java虛擬機與操作系統(tǒng)和計算機硬件無關(guān)。Java經(jīng)過編譯后的字節(jié)碼程序可以在網(wǎng)絡(luò)上流動到任意支持Java虛擬機的網(wǎng)點機上運行。1.3java虛擬機與運行環(huán)境Java是解釋型的高級編程語言編譯型源程序字節(jié)碼程序Java源程序可執(zhí)行程序EXE裸機操作系統(tǒng)解釋器編譯連接編譯運行解釋運行.java.classJava虛擬機
Java編譯系統(tǒng)和運行系統(tǒng)的功能如圖所示。1.4java程序的運行
Java編譯和運行系統(tǒng)功能圖
編譯源程序(如hello-java)字節(jié)碼文件Hello.class網(wǎng)絡(luò)或本地類裝載器解釋器字節(jié)碼檢驗器代碼生成器即時運行部件運行系統(tǒng)創(chuàng)建,編譯運行1.
編寫Java源程序:文件以Java作為后綴。
2.源程序編譯成字節(jié)碼
3.由運行系統(tǒng)解釋和執(zhí)行。開發(fā)流程如圖所示。
1.5java程序的開發(fā)執(zhí)行流程源文件(java文件)編譯器編譯字節(jié)碼(class文件)運行系統(tǒng)解釋運行結(jié)果2.1JDKJDK的安裝與配置下載地址:/j2se/1.4.2/download.html安裝后生成的目錄:lib目錄保存的是庫文件classes目錄保存的是Java類庫bin目錄一些執(zhí)行文件和動態(tài)連接庫文件demo目錄一些Applet的實例
2.1JDKJDK的安裝與配置配置環(huán)境變量:從桌面上選擇“我的電腦”(右鍵)→屬性→高級→環(huán)境變量在其中選擇“系統(tǒng)變量”的“新建”在變量名中輸入CLASSPATH,變量值中輸入類庫名c:\jdk13\LIB\dt.JAR;c:\jdk13\LIB\TOOLS.JAR;然后選擇確定。再次選擇“系統(tǒng)變量”的“新建”,在變量名中輸入PATH,變量值中輸入c:\jdk13\BIN,然后選擇確定。
注意:在配置完成后,要重新啟動計算機,環(huán)境變量才能生效。
2.1JDKJDK中的常用命令:javac編譯命令把Java語言源碼編譯成字節(jié)碼
java解釋執(zhí)行命令執(zhí)行由javac命令生成的字節(jié)代碼
2.1JDKJDK下開發(fā)Java應(yīng)用的步驟
編寫源文件打開文本編輯器:【開始】→【程序】→【附件】→【記事本】
將源文件編譯成字節(jié)碼文件運行程序
開始編寫我們第一個Java程序!Applet和ApplicationJavaApplet(小應(yīng)用程序):不是一個完整的應(yīng)用程序,而是框架程序中的一個模塊,所以只能在WWW瀏覽器環(huán)境下運行。JavaApplication(Java應(yīng)用程序):是一個完整的應(yīng)用程序,可以獨立地運行。JavaApplet舉例importjava.applet.*;importjava.awt.*;publicclassMyFirstJavaAppletextendsApplet{publicvoidpaint(Graphicsg){g.drawString(“HelloWorld.”);}}JavaApplet小應(yīng)用程序基本結(jié)構(gòu)importjava.applet.*;importjava.awt.*;class
extendsApplet{
}類名稱類成員聲明<HTML><HEAD><TITLE>MyFirstJavaApplet</TITLE></HEAD><BODY><HR><APPLETCODE=MyFirstMyAppletWIDTH=500HEIGHT=500></APPLET></BODY></HTML>Test.html測試網(wǎng)頁JavaApplet工作原理HTML文件嵌入Appletwww服務(wù)器www服務(wù)器www瀏覽器請求HTML文件下載HTML文件請求Applet字節(jié)碼下載Applet字節(jié)碼解釋執(zhí)行Applet字節(jié)碼編寫Java程序需要注意的幾點Java區(qū)分大小寫類定義不能嵌套一個程序中可以有一個或多個類,但其中只能有一個主類源程序編寫完畢,應(yīng)該用主類名作為文件名,再加后綴.java存儲成磁盤文件3.2標(biāo)識符、注釋和分隔符
標(biāo)識符用來標(biāo)記語言中元素名稱Java標(biāo)識符的規(guī)則:以字母、下劃線或美元符$開頭字母、下劃線、數(shù)字組成的序列,而且,標(biāo)識符的長度任意標(biāo)識符分為兩類:保留字用戶定義標(biāo)識符保留字:一律小寫abstractdoubleintstrictfpbooleanelseinterfacesuperbreakextendslongswitchbytefinalnativesynchronizedcasefinallynewthiscatchfloatpackagethrowcharforprivatethrowsclassgotoprotectedtransientconstifpublictrycontinueimplementsreturnvoiddefaultimportshortvolatiledoinstanceofstaticwhiletruefalse程序設(shè)計者根據(jù)自己的需要定義的類、變量、方法、接口的名字。用戶定義標(biāo)識符注意:
1.禁止用保留字作為用戶標(biāo)識符;
2.遵守先定義后使用的原則。即只有定義了的標(biāo)識符,才可在語句部分使用。合法標(biāo)識符:
A,a1,$Systembol,square,ex_sa不合法標(biāo)識符:
1a(以數(shù)字1開頭)
break(禁止使用保留字)
TWOWORDS(含有空格)
.NO(有圓點)
Java有三種注釋形式:“//”單行注釋:表示從此向后,直到行尾都是注釋。“/*……*/”塊注釋:在“/*”和“*/”之間都是注釋,塊注釋不能嵌套?!?**……*/”文檔注釋:所有在“/**”和“*/”之間的內(nèi)容可以用來自動形成文檔。3.2標(biāo)識符、注釋和分隔符空格、逗號、分號及行結(jié)束符稱為分隔符3.2標(biāo)識符、注釋和分隔符注意:分隔符(逗號、分號等)不能是中文下的。變量:Java的變量有兩種:局部變量、類成員變量。變量必須先說明后使用。變量的說明形式如下:
類型
變量名表當(dāng)變量名列表中說明多個變量為同一類型時,變量名之間用逗號分隔
注意:
局部變量在使用前必須給定初值,否則,Java將不編譯,而類成員變量無此要求。3.3變量與常量習(xí)慣上,變量名以小寫字母開頭,若一個變量名由超過一個單詞所組成,則第一個單詞之后的所有單詞都以大寫字母開頭,以便于理解該變量名。例如,anIntVar、myName變量名變量類型用于表述數(shù)據(jù)的格式和結(jié)構(gòu)。Java中的數(shù)據(jù)類型可分為兩大類:基本數(shù)據(jù)類型:整數(shù)浮點數(shù)字符布爾型構(gòu)造數(shù)據(jù)類型:
Java語言中構(gòu)造類型用類來描述。
變量的類型數(shù)據(jù)類型名占用內(nèi)存空間數(shù)值范圍缺省值說明byte1字節(jié)(-128)--1270整
型short2字節(jié)(-32768)--327670int4字節(jié)(-2147483648)--21474836470long8字節(jié)(-9223372036854775808)--92233720368547758070float4字節(jié)(±3.4028347E+38)--(±1.40239846E-45)0.0F
浮點型double8字節(jié)(±1.79769313486231570E+308)--(±4.94065645841246544E-324)0.0Dchar2字節(jié)\u0000--\uFFFF\u0000字符型boolean1位true或false
False布爾型
基本數(shù)據(jù)類型表注:缺省值就是默認(rèn)的初值,只對成員變量有用.局部變量在使用前必須人為地給定初值
變量的作用域是指什么范圍的程序可以訪問該變量。變量說明時就確定了其作用域。
變量按作用域分為:
類成員變量方法參數(shù)局部變量變量的作用域常量
常量是指在程序運行過程中其值不變的量。常量的表示形式:
final變量類型變量名3.3變量與常量3.4基本類型和一維數(shù)組整型浮點型布爾型字符型一維數(shù)組
采用不同的整數(shù)類型表達(dá)同一數(shù)值,在存儲單元中的存儲情況是不同的。下圖表示的是數(shù)值20的不同存儲形式:00010100byte型
0000000000010100short型
00000000000000000000000000010100int型0000000000000000000000000000000000000000000000000000000000010100
long型
3.4.1整型
整數(shù)變量有三種表示形式:(1)十進制整數(shù)(2)八進制整數(shù)(3)十六進制整數(shù)
420520x2A0X2a
Java缺省整數(shù)常量類型為int類型,如果要表示long類型整數(shù)需要在整數(shù)后加上后綴L或l
整數(shù)變量整型變量類型有int、short、long、byte,由于byte和short類型表示的數(shù)范圍較小,不常使用。整型變量說明如下:例3.2intanIntVar;
//說明變量anIntVar是int整型longaLongVar=12345;//說明變量aLongVar是long整
//型,并賦以初值12345shortaShortVar;
//說明變量aShortVar是short整型byteaByteVar;
//說明變量aByteVar是byte整型
整數(shù)變量
浮點型包括兩種不同的實型:float和double。1Java缺省的浮點型常數(shù)是double型2如果要表示float型,要在數(shù)字后加后綴F或f。如果要表示double型,也可以在數(shù)字后加后綴D或d。
3.4.2浮點型浮點型有兩種表示法:(1)浮點型十進制表示法
-3.5f0.0f123.45f+678.9f要注意,采用十進制表示法時,小數(shù)點的兩側(cè)都必須有數(shù)字,缺一不可,如+123.和.56都是不合法的。
浮點型變量(2)浮點型科學(xué)表示法:
-1.234567E+12
(-1.2345678901×1012)
尾數(shù)
階碼注意:尾數(shù)必須有,但小數(shù)部分可無;階碼必須有,必須是整數(shù)。下列表示都是不正確的。
E-6(缺尾數(shù))
3E(無階碼)
2.E3(尾數(shù)出錯)
2E1.2(階碼非整數(shù))
浮點型常量布爾數(shù)據(jù)類型用于表達(dá)邏輯狀態(tài):布爾型數(shù)據(jù)只有兩個值:true和false。注意:
Java中不可將布爾類型看做整型值。3.4.3布爾型
字符類型數(shù)據(jù)只有一個字符,采用16位二進制Unicode編碼表示。
字符型表示字符用兩個單引號括起來一個字符來表述。例如:
‘A’;’a’;’2’;’大’;3.4.4字符型
字符型變量表述
轉(zhuǎn)義字符
Java允許在字符串中出現(xiàn)轉(zhuǎn)義字符,轉(zhuǎn)義字符見下表換碼序列名稱Unicode值\b退格\u0008\tTab(制表)\u0009\n換行\(zhòng)u000a\r硬回車\u000d\”雙引號\u0022\ˊ單引號\u0027\\反斜杠\u005c字符串常量一個字符串常量是括在兩個雙引號之間的字符序列。若兩個雙引號之間沒有任何字符,則為空串。以下是字符串的一些例子:"Thisisastringconstant"JAVA""Yousee"Java語言把字符串常量當(dāng)作String類型的一個對象來處理,以后有詳細(xì)介紹。3.5運算符及表達(dá)式運算符表達(dá)式運算符表明對操作數(shù)的運算方式。運算符按其要求的操作數(shù)個數(shù)分為:1.一元運算符如++、--2.二元運算符如+、-、*、/、%3.三元運算符如?:運算符按其功能分為七類:1.算術(shù)運算符+、-、*、/、%、++、--a++(a=a+1)2.關(guān)系運算符>、<、>=、<=、==、!=3.邏輯運算符!、&&、||、&、|4.位運算符>>、<<、>>>、&、|、^、~5.條件運算符?:6.賦值運算符=、+=、-=7.其他:分量運算符.、下標(biāo)運算符[]、實例運算instanceof3.5.2運算符單元運算符如
+(一元加,取正值)、
-(一元減,取負(fù)值)、
++
(自加)、--
(自減)雙元運算符如+(加)、-(減)、*(乘)
/(除)、%(取余數(shù))。3.5.3算術(shù)運算符1單目運算(一元運算)
intx=10,y1,y2;y1=++x;//x先加1,再賦于y1y2=x++;//x先賦于y2,再自增13.5.3算術(shù)運算符2雙目運算符:%
(1)操作數(shù)可以是整型,實型,字符型
(2)運算的結(jié)果為int,long,float,double例:‘a(chǎn)’%7.5;8%3;
4%3.0;1關(guān)系運算符有七種:
==
,!=,<,<=,>,>=
instanceof(對象運算符)
操作數(shù):
==和!=可作用于所有簡單型別身上;
instanceof用來確定一對象是否是某一指定類的對象。
3.5.4關(guān)系運算符1邏輯運算符:
!(非),&&(與),||(或),^(異或)。這些運算符要求的操作數(shù)和結(jié)果值都是布爾型。
2邏輯運算的直通計算:
表達(dá)式后面對計算布爾值沒有作用的部分忽略掉
3.5.5邏輯運算符1位運算符用來操作基本整數(shù)型別中的個別的位。
~
按位取反
&
按位與
|
按位或
^
按位異或
>>
有符號二進制右移一定位
<<
有符號二進制左移一定位
>>>
無符號二進制右移一定位3.5.6位運算符2boolean值被視為單一的位,可以執(zhí)行&,|,^三種位運算賦值運算的表述
注意:賦值運算符“=”與數(shù)學(xué)的等號含義不同。
變量名=表達(dá)式;例:x=4;
算術(shù)運算符,位操作符和賦值運算符結(jié)合起來,形式如下:
+=、-=、*=、/=、%=
例:x+=y等價于x=x+y3.5.7賦值運算符Java中唯一的三元運算符,其格式如下:
變量=<布爾表達(dá)式>?<表達(dá)式1>:<表達(dá)式2>含義是:當(dāng)<布爾表達(dá)式>為真時,變量的值為<表達(dá)式1>的值,否則為<表達(dá)式2>的值。舉例(見下頁):3.5.8條件運算符publicclasssss{ publicstaticvoidmain(Stringargs[]){ intx=20; absX=x>0?x:-x; //如x>0,absX等于x,否則等于x的相反數(shù)
System.out.println(“x的絕對值:”+absX); }}3.5.8條件運算符
表達(dá)式是由操作數(shù)和運算符按一定語法形式組成的符號序列,以下是合法的表達(dá)式例如:
a+b(a+b)*(a-b)“name=”+“李明”
每個表達(dá)式經(jīng)過運算后都會產(chǎn)生一個確定的值。一個常量或一個變量是最簡單的表達(dá)式。表達(dá)式作為一個整體(如同一個操作數(shù))還可以看成一個操作數(shù)參與到其他運算中,形成復(fù)雜的表達(dá)式。
3.5.1表達(dá)式3.6運算符的優(yōu)先級優(yōu)先級運算符類型1()2+、-、++、--、!、~單目運算符3*、/、%算術(shù)運算符4+、-算術(shù)運算符5<<、>>、>>>移位運算符6<、<=、>、>=關(guān)系運算符7==、!=關(guān)系運算符8&&邏輯運算符9||邏輯運算符10?:條件運算符11=、+=、-=、*=、/=、%=、^=賦值運算符12&=、|=、<<=、>>=、>>>=表達(dá)式寫法的習(xí)慣:(1)除非是簡單的直觀運算,應(yīng)該盡量使用括號(2)盡量不要寫太長的表達(dá)式,過長的表達(dá)式容易引起對求值次序的誤解。(3)有時為了表達(dá)清楚,可以引進多余的括號3.6運算符的優(yōu)先級3.7數(shù)據(jù)類型轉(zhuǎn)換自動類型轉(zhuǎn)換強制類型轉(zhuǎn)換
Java中整型、實型、字符型數(shù)據(jù)可以混合運算。運算過程中,不同類型的數(shù)據(jù)會自動轉(zhuǎn)換為同一類型。自動類型轉(zhuǎn)換原則:
從低數(shù)據(jù)類型向高數(shù)據(jù)類型轉(zhuǎn)換即:
(byte
,char)→short→int
→long→float→double注意:布爾型與其它基本類型之間不能轉(zhuǎn)換舉例:3+4.5=3.0+4.5=7.53.7.1自動類型轉(zhuǎn)換形式為:
(類型名)表達(dá)式例如:
longl=156;byteb;
b=(byte)l;
3.7.2強制類型轉(zhuǎn)換注意:1.
一般使用強制類型轉(zhuǎn)換可能會導(dǎo)致數(shù)值溢出或精度的下降,應(yīng)盡量避免。
2.布爾型與其它基本類型之間不能轉(zhuǎn)換3.8簡單語句和復(fù)合語句變量說明語句復(fù)制語句方法調(diào)用語句空語句標(biāo)準(zhǔn)輸入輸出復(fù)合語句語句是程序的基本組成單位。一個基本的簡單語句總是以分號結(jié)尾的。變量說明語句用來聲明一個變量,變量說明語句的格式為:類型變量名1,變量名2…;
例:charc=‘a(chǎn)’;inti=1;3.8.1變量聲明語句3.8.2賦值語句賦值語句是將表達(dá)式的值賦給變量其格式為:
變量=表達(dá)式;例:charc;c=‘a(chǎn)’;方法調(diào)用語句的一般形式為:
對象.方法名(實參數(shù)列表);例如:
System.out.println(“Example!”);3.8.3方法調(diào)用語句3.8.4空語句空語句是什么都不做的語句,其形式為:
;//這是一條空語句
輸入和輸出是Java程序的重要組成部分,它提供了人機交互的手段,它們屬于方法調(diào)用語句。3.8.5標(biāo)準(zhǔn)輸入輸出(I/O)1輸入輸出
輸入是指把需要加工的數(shù)據(jù)放到程序中
輸出則把程序處理的結(jié)果呈現(xiàn)給用戶2標(biāo)準(zhǔn)輸入輸出
一般用鍵盤作為標(biāo)準(zhǔn)的輸入設(shè)備
顯示器則是標(biāo)準(zhǔn)的輸出設(shè)備通過System.in和System.out對象分別與鍵盤和顯示器發(fā)生聯(lián)系進行輸入和輸出System.out對象中包含的最常用的方法是:
println(參數(shù))方法向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)打印一行文本并換行
print(參數(shù))方法向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)打印一行文本,但不換行標(biāo)準(zhǔn)輸出System.out對象System.in中最常用的方法:intread()返回所輸入的字符串的第一個字符的ASCII碼intread(byteb[])返回讀取的字符的數(shù)量intread(byteb[],intoff,intlen)
返回讀取的字節(jié)的數(shù)量,將輸入的字符串的前
len位,存放在字符數(shù)組b的下標(biāo)為off以后的元素中標(biāo)準(zhǔn)輸入System.in對象例子:publicclasstestinput{publicstaticvoidmain(String[]args){try{byte[]by=newbyte[256];System.out.println("Pleaseinput:");inti=System.in.read(by);System.out.println(i);Strings;s=newString(by,0,i);System.out.println(s);}catch(Exceptione){e.printStackTrace();}}}
將相關(guān)語句組合在一起就構(gòu)成復(fù)合語句,復(fù)合語句由{}括起來,{}內(nèi)的每條語句的語法與上面介紹的一樣。
{}也叫一個語句塊。3.8.6復(fù)合語句3.9控制語句表達(dá)式語句:表達(dá)式后加一個分號a+=a*6;a++;a+3;復(fù)合語句:包含在一對大括號中的語句序列流程控制語句:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)選擇結(jié)構(gòu)if(布爾型表達(dá)式)語句1;[else
語句2;]
switch(表達(dá)式){
case
常量1:語句塊1;
......
case
常量n:語句塊n;
default:語句塊n+1;}使用switch語句需要注意:表達(dá)式必須是符合byte、char、short和int類型的表達(dá)式,而不能使用浮點類型或long類型,也不能為一個字符串;要有用于跳轉(zhuǎn)的break語句;switch語句中的每個case子句都必須對應(yīng)一個單值。循環(huán)結(jié)構(gòu)—while
格式:
while(循環(huán)條件){循環(huán)體}含義:當(dāng)循環(huán)條件為true時,重復(fù)執(zhí)行循環(huán)體。intx=2;while(x<7){ System.out.println(“x=”+x); x++;}注意:while表達(dá)式的括號后面一定不要寫“;”循環(huán)結(jié)構(gòu)—do格式:do{
循環(huán)體}while(循環(huán)條件);含義:重復(fù)執(zhí)行循環(huán)體,直到循環(huán)條件為false。循環(huán)結(jié)構(gòu)—for格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體;表達(dá)式1:循環(huán)初值表達(dá)式2:布爾型表達(dá)式,循環(huán)條件表達(dá)式3:循環(huán)增量表達(dá)式控制轉(zhuǎn)移語句break語句:使程序的流程從一個語句塊內(nèi)部轉(zhuǎn)移出去。通常在switch和循環(huán)語句中使用。continue語句:只能在循環(huán)語句中使用。其作用是終止當(dāng)前這一輪的循環(huán),直接進入下一輪的循環(huán)。3.4.5數(shù)組為什么會有數(shù)組?棧內(nèi)存和堆內(nèi)存int[]x;x=newint[100];x=null;的內(nèi)存狀態(tài)變化情況3.4.5數(shù)組數(shù)組類型屬于復(fù)合數(shù)據(jù)類型,它是由類型相同的元素組成的有順序的數(shù)據(jù)集合。特點:元素類型相同;元素有順序;所有元素共用一個名稱。第一步數(shù)組的聲明:格式:數(shù)組元素類型數(shù)組名[];數(shù)組元素類型[]數(shù)組名;舉例:
intmyarray[];doublearray_double[];String[]str;Point[]P;注意:聲明數(shù)組時不能指定其長度inta[3];第二步創(chuàng)建數(shù)組空間:與其他的語言不同,在Java語言中,聲明數(shù)組時不能指定它的長度,而是利用new來為數(shù)組型變量分配內(nèi)存空間,我們將其稱之為創(chuàng)建數(shù)組。
myarray=newint[10];array_double=newdouble[1000];intString[]str=newString[10];注意:數(shù)組創(chuàng)建后,系統(tǒng)自動為數(shù)組元素賦初值。第三步數(shù)組的初始化:數(shù)組元素的默認(rèn)初值:整型:0實型:0.0f或0.0d字符:‘\0’類對象:nullIntarray_int[]={1,2,3,4,5,6,7};String[]str={“Fortran”,“QBasic”,“Pascal”};數(shù)組元素的使用:int[]x;x=newint[10];x[0]=3;x[4]=8;x[i]使用數(shù)組時要注意的問題:空指針異常如何得到數(shù)組長度數(shù)組越界異常main函數(shù)的輸入?yún)?shù)(String[]args)的使用多維數(shù)組:如何理解多維數(shù)組?Java中沒有真正的多維數(shù)組,只有數(shù)組的數(shù)組。Java中只有數(shù)組的數(shù)組。定義一個多維數(shù)組:int[][]x;x=int[3][];x[0]=newint[3];x[1]=newint[2];4.1面向?qū)ο蟮睦碚摶A(chǔ)面向過程在一個結(jié)構(gòu)體中定義窗口的大小、位置、顏色背景等屬性,對窗口操作的函數(shù)與窗口本身的定義沒有任何關(guān)系,如HideWindow,MoveWindow和MinimizeWindow,這些函數(shù)都需要接受一個代表要被操作的窗口參數(shù),是一種謂語與賓語的關(guān)系。面向?qū)ο蠖x窗口時,除了要指定在面向過程中規(guī)定的那些屬性,如大小、位置、顏色、背景等外,還要制定該窗口可能具有的動作,如隱藏、移動、最小化等,這些函數(shù)被調(diào)用時,都是以某個窗口要怎樣來使用的,是一種主語與謂語的關(guān)系。
4.2對象和類classperson{intname;booleansextype;
intage;
voideat(){…}voidsleep(){…};voidwork(){…}}
計算機中的數(shù)據(jù)原型,即我們定義的類
現(xiàn)實生活中的對象
現(xiàn)實生活中的對象
抽象得到類的定義
類實例化得到對象現(xiàn)實世界
計算機中的數(shù)據(jù)4.2對象和類對象和類的關(guān)系對象是類的實例化類是對象的抽象電視機設(shè)計圖電視機1電視機2電視機3類對象
什么是類:類是描述對象的“基本原型”,它定義一種對象所能擁有的數(shù)據(jù)和能完成的操作(成員變量,方法)。什么是對象:是類的一個實例,是一個實實在在的個體。4.2對象和類data數(shù)據(jù)元素
方法一個例子:age是屬性,也叫成員變量;showAge叫類的成員函數(shù);showAge方法可以直接訪問同一個類中的age變量,如果該方法中有與成員變量同名的局部變量,該方法對這個變量名的訪問是局部變量,不再是成員變量。classPerson{}intage;publicvoidshowAge(){ System.out.println(age);}對象的產(chǎn)生:Personp1=newPerson();執(zhí)行后的內(nèi)存狀態(tài):比較:int[]xx=newint[30];執(zhí)行后的內(nèi)存狀態(tài):對象的使用:創(chuàng)建新的對象之后,我們就可以使用“對象名.對象成員”的格式,來訪問對象的成員(包括屬性和方法)ClassTestPerson{ publicstaticvoidmain(String[]args) { Personp1=newPerson(); Personp2=newPerson(); p1.age=-30; p1.showAge(); p2.showAge(); }}對象的使用:上面程序運行的內(nèi)存布局圖如下:對象的生命周期:包的概念:為解決同一任務(wù)或子任務(wù)的類組成一個包 由包、子包和類構(gòu)成的一般Java程序的樹型結(jié)構(gòu),Java程序保存在文件系統(tǒng)時,包名對應(yīng)于一目錄名,子包名對應(yīng)于目錄的子目錄,類對應(yīng)于它目錄樹型結(jié)構(gòu)的結(jié)點。
---包名1----包名1_1---類1_1_1---類1_1_2---類1_1_3----包名1_2---類1_2_1---類1_2_24.3java的包與類4.3.1類描述對象特征publicclassPoint{ publicintx;//成員變量說明,定義點的x坐標(biāo)
publicinty;//成員變量說明,定義點的y坐標(biāo)
publicPoint(intX,intY)//帶參數(shù)的構(gòu)造方法;
{x=X;y=Y;} publicdoubledistance()//計算點到原點的距離
{ returnMath.sqrt(x*x+y*y); }}類首說明的形式如下:[package說明][import說明][修飾符]class類名[extends父類名][implements接口列表]1.類修飾符分類:friendly(默認(rèn)) 類只能被本包中的其他類使用public(公共) 類能被所有的類訪問,注意。。。abstract(抽象) 類不能被實例化,含未實現(xiàn)的方法final(最終) 類不能被繼承,即不能有子類2.extends:實現(xiàn)單繼承4.3.2類首說明類體形式說明如下:
{
[成員變量說明][構(gòu)造方法說明][靜態(tài)方法說明][方法說明]}注意:類體中說明都是可選的,也沒有先后順序之分4.3.2類體說明形式:
[修飾符]類型成員變量名1,…,成員變量名n;修飾符兩類:
1訪問修飾符:
默認(rèn)的成員變量可以被定義同一包中的任何類訪問;
public成員變量可以被項目文件中的任何方法所訪問;
protected變量可以被有繼承關(guān)系的類和同一包中的類的訪問;
private成員變量只能在同一個類中定義的方法中使用,此法安全
2其它:final(常量)、static(靜態(tài))成員變量說明修飾符類內(nèi)子類包內(nèi)其他類其他包內(nèi)的類缺省(friendly)√×√×public√√√√private√×××protected√√√×變量的訪問權(quán)限在表格中:√表示允許訪問,×表示禁止訪問大小public>protected>缺省>private
1用static修飾的成員變量叫類變量(或靜態(tài)變量),而沒有用static修飾的成員變量叫對象變量。2static修飾的數(shù)據(jù)和方法不局限于所屬的對象所以它不需要創(chuàng)建對象就可以直接訪問。static(靜態(tài))類的內(nèi)部:只用變量名即可訪問類的外部:1對象變量:只有在構(gòu)造對象后才能訪問到
格式為:對象名.對象變量
2類變量:
(1)通過類名訪問
格式:類名.類變量名
(2)通過對象名來訪問成員變量使用例:classA{static
intax;
intay;}
publicclassB{static
intbx;
intby;
publicstaticvoid
main(Stringargs[]){A.ax=5;bx=A.ax+2;//訪問類變量(不需建對象)
AA1=newA();//創(chuàng)建類A的一個對象A1
BB1=newB();//創(chuàng)建類B的一個對象B1
A1.ay=6;//訪問對象A1的成員變量ayB1.by=A1.ax;//訪問對象B1的成員變量by
System.out.println(A.ax+“”+B.bx);//輸出二變量的值
System.out.println(B1.bx+B1.by);
//輸出二變量的和
}
}//程序結(jié)束成員變量訪問的例子訪問本類的類變量可省略類名訪問類變量也可通過類對象名訪問本類的類變量時,也可加上類名或類對象名實現(xiàn)類的封裝性如果外面的程序可以隨意修改一個類的成員變量,會造成不可預(yù)料的程序錯誤,就像一個人的身高,不能被外部隨意修改,只能通過各種攝取營養(yǎng)的方法去修改這個屬性。在定義一個類的成員(包括變量和方法)時,使用private關(guān)鍵字說明這個成員的訪問權(quán)限,這個成員就成了類的私有成員,該類能被這個類的其他成員方法使用,而不能不其他的類中的方法所調(diào)用。實現(xiàn)類的封裝性為了實現(xiàn)更好的封裝性,我們通常將類的成員變量聲名為private,在通過public的方法來對這個變量進行訪問。對一個變量的操作,一般都有讀取和賦值操作,我們分別定義兩個方法來實現(xiàn)這兩種操作,一個是getXxx()(Xxx表示要訪問的成員變量的名字),用來讀取這個成員變量操作,另外一個是setXxx()用來對這個成員變量賦值。一個類通常就是一個小的模塊,我們應(yīng)該讓模塊僅僅公開必須要讓外界知道的內(nèi)容,而隱藏其他一切內(nèi)容。我們在進行程序的詳細(xì)設(shè)計時,應(yīng)盡量避免一個模塊直接修改或操作另一個模塊的數(shù)據(jù),模塊設(shè)計追求強內(nèi)聚(許多功能盡量在類的內(nèi)部獨立完成,不讓外面干預(yù)),弱耦合(提供給外部盡量少的方法調(diào)用)。構(gòu)造方法構(gòu)造方法的作用: 當(dāng)一個類的實例對象剛產(chǎn)生時,這個類的構(gòu)造方法就會被自動調(diào)用,我們可以在這個方法中加入要完成的初始化工作的代碼。這就好像我們規(guī)定每個“人”一出生就必須先洗澡,我們就可以在“人”的構(gòu)造方法中加入完成“洗澡”的程序代碼,于是,每個“人”一出生就會自動完成“洗澡”,程序不必再在每個人剛出生是一個一個告訴他們要“洗澡”了。作用:專門用于創(chuàng)建類對象的方法。形式:
[修飾符]
方法名([形式參數(shù)列表])[throws異常列表]
方法體
調(diào)用:創(chuàng)建對象時被Java編譯器自動調(diào)用的。當(dāng)構(gòu)造一個類的實例時,便以其主要完成以下工作:為對象分配內(nèi)存空間初始化對象中的成員變量的值調(diào)用對象的構(gòu)造方法一個類的構(gòu)造方法可以有多個,他們具有相同的方法名,編譯器會根據(jù)參數(shù)的類型及個數(shù)來判斷使用哪個構(gòu)造方法。構(gòu)造方法說明注意:沒有返回值類型(void也不行)1)缺省的構(gòu)造方法:無參數(shù)2)自定義構(gòu)造方法:可帶、也可不帶參數(shù) 用戶定義的構(gòu)造方法可以帶有或不帶有參數(shù)
構(gòu)造函數(shù)分類:自定義構(gòu)造方法p1=newperson(“tom”,78),該代碼會做這樣幾件事:創(chuàng)建指定的類的新實例對象在堆內(nèi)存中為實例對象分配內(nèi)存空間,并調(diào)用指定的類的構(gòu)造方法最后將實例對象的首地址賦值給引用變量p1p1=newperson(“tom”,78)的內(nèi)存變化過程分析this是什么?如果func2方法被調(diào)用,一定是事先已經(jīng)有了一個存在的對象,func2作為那個對象的方法被使用。在func2內(nèi)部能引用別的對象,同樣也能引用func2所屬的那個對象。在func2中,自己所屬的那個對象的引用名稱是什么呢?this關(guān)鍵字在java程序里的作用和它的詞義很接近,它在函數(shù)內(nèi)部就是這個函數(shù)所屬的對象的引用變量。this引用句柄所在的位置每個成員方法內(nèi)部,都有一個this引用變量,指向調(diào)用這個方法的對象,類中的成員方法與this之間的關(guān)系如圖this引用句柄的應(yīng)用一個類中的成員方法可以直接調(diào)用同類中的其他成員,其實我們在一個方法內(nèi)部使用“this.其他成員”的引用方式和直接用“其他成員”的效果是一樣的,那this還有多大的作用呢?在下面的情況下,我們還是非得用this關(guān)鍵字不可的:讓類的成員變量名和對其賦值的成員方法的參數(shù)變量同名是必要的;在一個構(gòu)造方法里調(diào)用其他的構(gòu)造方法,不是用構(gòu)造方法名,而是用this(參數(shù)列表的形式),根據(jù)其中的參數(shù)列表,選擇相應(yīng)的構(gòu)造方法。方法首部說明
方法體方法的調(diào)用
方法說明及調(diào)用說明形式:[修飾符]返回值類型方法名([形參列表][throws異常列表]修飾符分類:訪問修飾符:缺省、public、protected、private
非訪問修飾符:static:靜態(tài)方法
abstract:抽象方法,無方法體
final:最終方法,子類不能改變其方法實現(xiàn)
native:本地方法,即方法實現(xiàn)與本機系統(tǒng)有關(guān)
synchronized(同步):執(zhí)行前要給方法設(shè)置同步機制1.方法首部說明一定要有返回類型(1)方法體方法體是由一對大括號括起來的一段代碼,格式如下:
{//方法體開始
實現(xiàn)方法的代碼段
}//方法體結(jié)束
方法體也可以是一個分號“;”,表示無具體方法(方法還沒有實現(xiàn),即只是一個方法框架。注意:只有方法的修飾符中有abstract或native時,方法才可無方法體。2.方法體return語句用于從當(dāng)前方法中退出,返回到調(diào)用該方法的語句處繼續(xù)程序的執(zhí)行。其格式如下:
格式1:return表達(dá)式;格式2:return;
格式1返回一個值給調(diào)用該方法的語句,返回值的數(shù)據(jù)類型必須與方法聲明中的返回值類型一致??梢允褂脧娭祁愋娃D(zhuǎn)換來使類型一致;
格式2用于返回類型為void的方法中,使用該語句以結(jié)束方法,返回調(diào)用處。(2)return語句 return語句通常用在一個方法體的最后,以退出該方法并返回一個值。?。?!在Java中,單獨的return語句用在一個方法體的中間時,會產(chǎn)生編譯錯誤,因為這時有一些語句執(zhí)行不到。例如:intmethod(intnum){
returnnum;
∥將導(dǎo)致編譯錯誤,因為它將使后面的語句執(zhí)行不到
……
}(2)return語句(2)return語句
可以通過把return語句嵌入到某些語句(如if-else)來使程序在未執(zhí)行完方法中的所有語句時退出,例如:intmethod(intnum){
if(num>0)returnnum; ∥可能執(zhí)行,也可能不執(zhí)行,取決于num的值
……
}
成員變量分為對象變量和類變量。同樣地,成員方法也有對象方法和類方法之分,其意義與對象變量、類變量一樣。即類方法是屬于整個類的,而對象方法是屬于類中的某個對象的。由于類方法是屬于整個類的,并不屬于類的哪個對象,所類方法的方法體中不能有與類的對象有關(guān)的內(nèi)容。即類方法體有如下限制:(1)類方法中不能引用對象變量;(2)類方法中不能調(diào)用類的對象方法;(3)在類方法中不能使用super、this關(guān)鍵字。
如果違反這些限制,就會導(dǎo)致程序編譯錯誤。(3)
類方法(static)
和類方法相比,對象方法幾乎沒有什么限制:(1)對象方法中可以引用對象變量,也可以引用類變量;(2)對象方法中可以調(diào)用類方法;(3)對象方法中可以使用super、this關(guān)鍵字。在程序設(shè)計中,一些通用的、公用型的方法與類的對象無關(guān),因此常常被作為類方法實現(xiàn)。Java類庫中Math類,其中多數(shù)的數(shù)學(xué)運算操作都被定義成靜態(tài)方法。因此,可以使用類方法把一些通用的、公用型的方法放在合適的類中,從而很好地將它們組織起來。應(yīng)用程序中的主方法main就是類方法。(3)
類方法(static)(3)
類方法(static)main()方法是靜態(tài)的,因此JVM在執(zhí)行main()方法是不創(chuàng)建main()方法所在的類的實例對象,因此在main()方法中,我們不能直接訪問該類中的非靜態(tài)成員,必須創(chuàng)建該類的一個實例對象后,才能通過這個對象去訪問類中的非靜態(tài)成員。外部調(diào)用類方法
1.類名.類方法名([實型參數(shù)列表]) 2.對象名.類方法名([實型參數(shù)列表])對象方法:
對象名.對象方法名([實型參數(shù)列表])3.方法的調(diào)用內(nèi)部調(diào)用:直接調(diào)用
1)類方法中不能引用對象變量
2)在類方法中不能使用super,this關(guān)鍵字
3)類方法不能調(diào)用對象方法4.遞歸方法
如果一個方法的方法體中又調(diào)用自身,則這種方法被稱為直接遞歸方法。如果一個方法通過調(diào)用其它方法而間接地調(diào)用到自身,則被稱為間接遞歸方法。
Java中遞歸方法的編寫方法與C++中遞歸函數(shù)的編寫方法是完全一樣的。下面用一個實例來說明它。4.遞歸方法例4.3用遞歸方法求1+2+3+…+n。程序編寫方法分析:假設(shè)編寫了一個成員方法sum(n)用于求出1+2+…+n,則調(diào)用sum(n-1)就可求出1+2+3+…+(n-1)。于是,求sum(n)可用“求出sum(n-1)后再加上n”的方法實現(xiàn)。即sum(n)方法的方法體就是調(diào)用sum(n-1)再加上n。程序如下:import
java.io.*;publicclass
Sum{
publicstaticintsum(int
n)
{if(n<1)
return0;elsereturnsum(n-1)+n;}publicstaticvoid
main(String
args[]){byte[]by=newbyte[20];intresult=0,num=0;Stringstr;
System.out.print(“Pleaseinputthenumber:”);try
{
System.in.read(by);//從鍵盤讀一個數(shù)字串保存于str中
str=newString(by);
num=Integer.parseInt(str);//數(shù)字串轉(zhuǎn)換成整數(shù)
}
catch
(Exceptione){}
//catch語句,Exception為異常類
result=sum(num);
//調(diào)用sum()求和
System.out.print(result);}
}
方法的final修飾符表明方法不得被覆蓋。帶有final修飾符的方法稱為最終方法。Java中除非說明為最終方法,否則方法是可以覆蓋的。Java之所以這樣規(guī)定,主要是因為Java的純面向?qū)ο筇匦裕迅采w當(dāng)作面象對象的重要特性,給予了最大限度的實現(xiàn)。
把方法聲明為最終方法有時可增加代碼的安全性。5.方法的final修飾符5.方法的final修飾符例4.5最終方法例finalbooleanGetSwitchState()//獲取開關(guān)狀態(tài){returnPower-On;
//返回Power-On值}6.單態(tài)設(shè)計模式設(shè)計模式是在大量的實踐中總結(jié)和理論化之后優(yōu)選的代碼結(jié)構(gòu)、編程風(fēng)格、以及解決問題的思考方式。設(shè)計模式就像是經(jīng)典的棋譜,不同的棋局,我們用不同的棋譜,免得我們自己再去思考和摸索。失敗為成功之母,但是要以大量的時間和精力為代價,如果有成功經(jīng)驗可借鑒,沒有人再愿意去甘冒失敗的風(fēng)險,我們沒有理由不去了解和掌握設(shè)計模式,這也是Java開發(fā)者提高自身的素質(zhì)的一個很好的選擇。使用模式也許會制約你去創(chuàng)新,不過真正有意義的創(chuàng)新只能出自少數(shù)天才,即使你就是那個天才,雖不必因循守舊,但也不可能完全不去了解和借鑒前人的成功經(jīng)驗。6.單態(tài)設(shè)計模式所謂的類的單態(tài)設(shè)計模式,就是采取一定的方法保證在整個軟件系統(tǒng)中,對某個類只能存在一個對象實例,并且該類只提供一個取得其對象實例的方法。我們首先必須將類的構(gòu)造方法的訪問權(quán)限設(shè)置為private;因為在類的外部開始還無法得到類的對象,只能調(diào)用該類的某個靜態(tài)方法以返回類內(nèi)部創(chuàng)建的對象;靜態(tài)方法只能訪問類中的靜態(tài)成員變量,所以,指向類內(nèi)部產(chǎn)生的該類對象的變量也必須定義成靜態(tài)的。4.4繼承4.4.1繼承概述4.4.2父類和子類的單繼承定義格式4.4.3子類對父類成員重載4.4.4null、this、super4.4.5多態(tài)性4.4.6最終類4.4.1繼承概述繼承是從現(xiàn)有的一個類創(chuàng)建新類的過程,可以簡化類的定義。Java只支持單繼承,不允許多重繼承。如果在聲明類B時,指明類B繼承了類A(類A是一個已定義了的類),則類B通常就擁有了類A的成員變量和方法。此時,類A稱為類B的父類(superclass),父類也稱為超類或基類;類B稱為類A的子類(subclass),子類也稱為派生類。4.4.1繼承概述繼承是面向?qū)ο缶幊痰囊粋€主要優(yōu)點之一,它對如何設(shè)計Java類有著直接的影響。繼承有如下幾點好處:它可以利用已有的類來創(chuàng)建自己的類,只需要指出自己的類和已有的其他的類有什么不同即可,而且還可以動態(tài)訪問其他有關(guān)的類中的信息。通過繼承,可以利用Java類庫所提供的豐富而有用的類,這些類都已經(jīng)被很好地實現(xiàn)。當(dāng)設(shè)計很大的程序時,繼承可以使程序組織得更加層次清晰,有利于程序設(shè)計和減少錯誤的發(fā)生。4.4.2父類和子類的單繼承定義格式
類繼承語法形式如下:
classSubClassNameextendsSupperClassNameextends是繼承關(guān)鍵詞。SubClassName是新的子類名,SupperClassName是繼承的父類名。父類名是必需的,而且只能有一個。父類名所指定的類必須是在當(dāng)前編譯單元中可以訪問的類,否則會產(chǎn)生編譯錯誤。4.4.2父類和子類的單繼承定義格式注意:子類不能繼承父類的私有成員(變量、方法)。supersuper: 代表父類,用于對類的父類的引用。使用情況:
1子類隱藏了超類中的變量或方法,而在程序中又要使用超類中被隱藏的變量或方法時
格式:super.變量;
super.方法([參數(shù)表])2在子類的構(gòu)造方法中引用超類的構(gòu)造方法時,
格式:super([參數(shù)表])補充:子類對象的實例化過程分配成員變量的存儲空間并進行默認(rèn)的初始化;綁定構(gòu)造方法參數(shù),就是newPerson(實際參數(shù)列表)中所傳遞進的參數(shù)賦值給構(gòu)造方法中的形式參數(shù)變量;如果有this()調(diào)用,則調(diào)用相應(yīng)的構(gòu)造方法,執(zhí)行結(jié)束后,回到當(dāng)前構(gòu)造方法,當(dāng)前構(gòu)造方法直接跳轉(zhuǎn)到步驟6執(zhí)行;顯式或隱式追溯調(diào)用父類的構(gòu)造方法(一直到object類為止,object類是Java類的最頂層父類),執(zhí)行結(jié)束后,回到當(dāng)前構(gòu)造方法,當(dāng)前構(gòu)造方法繼續(xù)往下執(zhí)行;進行實例變量的顯式初始化操作,也就是執(zhí)行在定義成員變量時就對其進行賦值的語句;執(zhí)行當(dāng)前構(gòu)造方法的方法體中的程序代碼。補充:子類對象的實例化過程補充:子類對象的實例化過程思考:為什么super()和this()語句不能同時在一個構(gòu)造函數(shù)中出現(xiàn)?為什么super()和this()語句只能作為構(gòu)造函數(shù)中的第一句出現(xiàn)?子類的特性:①子類擁有其父類的所有屬性和方法。但父類中說明為private的屬性和方法,子類不可直接訪問。
②子類可以對父類的方法覆蓋或重載。
方法覆蓋:
子類的方法首部與父類的方法首部相同(如何理解首部相同?),但是子類重新實現(xiàn)了該方法。
方法重載:
子類的方法名與父類的方法名相同,但是子類該方法的形式參數(shù)列表與父類的方法的形式參數(shù)列表不同,并且重新實現(xiàn)了該方法。
如果子類聲明了一個與父類的成員變量同名的成員變量,則稱父類的該成員變量被隱藏(Hiding)。4.4.3子類對父類成員重載4.4.3子類對父類成員重載注意:子類覆蓋父類的方法,子類方法的訪問權(quán)限一定不能比父類方法的訪問權(quán)限弱。被覆蓋的父類的方法,不能被子類的對象訪問。4.4.5多態(tài)性(Polymorphism)含義:同一操作對不同類可以呈現(xiàn)不同的行為。在繼承的情形下,當(dāng)調(diào)用繼承結(jié)構(gòu)中不同類的同一操作時,實際現(xiàn)行對象的操作被調(diào)用。特點:
final修飾符定義一個不能被繼承的類。目的:
增強代碼的安全性。4.4.6最終類總結(jié):final關(guān)鍵字在Java中聲明類、屬性和方法時,可使用final關(guān)鍵字來修飾。final標(biāo)記的類不能被繼承。final標(biāo)記的方法不能被子類重寫。final標(biāo)記的變量(成員變量或局部變量)即成為常量,只能賦值一次。null:為“空”變量,表示這個對象不存在相應(yīng)的實例
例:Rectanglerect=null;this:表示引用對象本身.使用情況:1方法體中訪問類的同名成員變量格式:this.成員變量
2在某一個構(gòu)造函數(shù)中使用本類的其它構(gòu)造函數(shù)格式:this(實參列表);總結(jié):null,this和super例4.9this引用自身class
Rectangle
{
int
width,length;
Rectangle(int
width,int
length)
//構(gòu)造方法
{
this.width=width;
//this代表對象自身
this.length=length;}
publicvoid
drawRect(){System.out.println("thisisRectangle!");}}
上面這個例子中,用this表示引用對象本身。總結(jié):null,this和supersuper用于對類的父類的引用。在構(gòu)造方法中,super代表對父類的構(gòu)造方法的引用。例4.10用super引用類的父類class
fillRectangleextendsRectangle{public
fillRectangle(int
w,int
h)
//構(gòu)造方法
{
super(w,h);
}
//調(diào)用父類的構(gòu)造方法
private
StringmakeString(char
ch,int
num)
{StringBufferstr=new
StringBuffer();for(int
i=num;i>0;i--)str.append(ch);
return
str.toString();}總結(jié):null,this和superpublicvoid
drawRect(){
for(int
i=length;i>0;i--)//用字符“#”繪制(填滿)一個矩形
System.out.pringln(makeString('#',width));}}
在這個類的構(gòu)造方法中并沒有寫新的程序,而是調(diào)用了父類的構(gòu)造函數(shù),用于初始化實例變量??偨Y(jié):null,this和super4.5接口接口的概念4.5.1接口的說明4.5.2接口的使用
4.5.3接口與類的比較接口的概念概念:就是一些常量和抽象方法的定義的集合,它是一個設(shè)計框架作用: 使設(shè)計與實現(xiàn)分離注意:接口可以繼承:一個接口可以繼承多個其它的接口;接口中的方法要用類來實現(xiàn);一個類可以實現(xiàn)多個接口。接口與類的比較接口類只能單繼承,而接口可以多繼承。類中的方法可以是具體的,也可以抽象的。接口中的方法都是抽象的。接口中的方法要用類來實現(xiàn),一個類可以實現(xiàn)多個接口。4.5.1接口的說明接口首說明
[pubic]interface接口名[extends
接口序列]{接口體}像類一樣,編譯好的接口保存在Class文件中。接口名前有pubic修飾符,則任何一個類都可以調(diào)用該接口接口名前沒有pubic修飾符,則只有那些與本接口在同一個包中的類才能訪問該接口。
接口體說明接口的成員——常量和抽象方法。
{[常量說明][抽象方法說明]}
變量:默認(rèn)為publicstaticfinal
抽象方法:默認(rèn)為publicabstract4.5.1接口的說明4.5.1接口的說明接口體說明注意:(1)接口中的成員變量(常量)說明聲明形式:
[修飾符]類型名變量名;接口中的成員變量的修飾符都只能用public、static、final,而且也都隱含著修飾符,所以修飾符是不必寫的。就是說,接口中的成員變量都是公用的靜態(tài)最終變量,即公用的靜態(tài)常量。
例如:在接口中,下面這行代碼:
int
STEP=5;
等同于:publicstaticfinal
int
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 制作拍攝合同范本
- 債務(wù)變更合同范本
- 代銷汽車合同范本
- 二手車合同范本商家自己寫
- 分階段付款合同范本
- 華帝櫥柜合同范本
- 農(nóng)村建房主體合同范本
- 單位門合同范本
- 醫(yī)療美容轉(zhuǎn)讓合同范例
- 產(chǎn)品設(shè)計開發(fā)合同范本
- CJJ2-2008城市橋梁工程施工與質(zhì)量驗收規(guī)范
- 病媒生物防治操作規(guī)程
- 2024年社會工作者《社會工作實務(wù)(中級)》考試真題必考題
- 德育教育研究課題申報書
- (高清版)JTG 3810-2017 公路工程建設(shè)項目造價文件管理導(dǎo)則
- 《煤礦重大事故隱患判定標(biāo)準(zhǔn)》試題及答案
- 《ISO31000:2024風(fēng)險管理指南》指導(dǎo)手冊(雷澤佳譯2024-04)
- 學(xué)前兒童表演游戲的組織與指導(dǎo)(學(xué)前兒童游戲課件)
- 建筑用真空陶瓷微珠絕熱系統(tǒng)應(yīng)用技術(shù)規(guī)程
- (高清版)DZT 0214-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 銅、鉛、鋅、銀、鎳、鉬
- 《拒絕校園欺凌 防霸凌主題班會》課件
評論
0/150
提交評論