JAVA程序設(shè)計(jì)期末復(fù)習(xí)_第1頁
JAVA程序設(shè)計(jì)期末復(fù)習(xí)_第2頁
JAVA程序設(shè)計(jì)期末復(fù)習(xí)_第3頁
JAVA程序設(shè)計(jì)期末復(fù)習(xí)_第4頁
JAVA程序設(shè)計(jì)期末復(fù)習(xí)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第1章 開發(fā)一個(gè)簡(jiǎn)單的java應(yīng)用程序1開發(fā)Java語言的公司:Sun (Sun Microsystems)太陽微電子公司開發(fā)2Java的3個(gè)版本?(JDK 1.5后)Java Platform Standard Edition(Java SE)標(biāo)準(zhǔn)版 Java Platform Enterprise Edition (Java EE) 企業(yè)版Java Platform Micro Edition(Java ME) 微小版JDK是什么:JDK(Java Development Kit)Java開發(fā)工具包。包括了JRE,是開發(fā)Java程序的工具。JRE是什么:JRE(Java Runtime E

2、nvironment)Java運(yùn)行環(huán)境,運(yùn)行JAVA程序所必須的環(huán)境的集合,包含JVM標(biāo)準(zhǔn)實(shí)現(xiàn)及Java核心類庫。JVM是什么:JVM (Java Virtual Machine) Java虛擬機(jī),它是一個(gè)虛構(gòu)出來的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的。3Java語言的幾個(gè)主要特點(diǎn)?平臺(tái)無關(guān)性:能運(yùn)行于不同的平臺(tái)上安全性:去掉了指針操作,內(nèi)存由操作系統(tǒng)分配面向?qū)ο螅豪妙愂钩绦蚋永诰S護(hù)分布式:可以使用網(wǎng)絡(luò)文件和使用本機(jī)文件一樣容易健壯性:檢查程序編譯和運(yùn)行的錯(cuò)誤4Java的三大核心機(jī)制虛擬機(jī)機(jī)制:利用虛擬機(jī)解釋字節(jié)碼(.class文件)執(zhí)行java程序?qū)崿F(xiàn)跨平臺(tái)垃圾

3、收集機(jī)制:自動(dòng)內(nèi)存回收代碼安全性機(jī)制:加載代碼后校驗(yàn)代碼后再執(zhí)行代碼5安裝JDK的操作系統(tǒng)問題:(1)必須針對(duì)于不同的操作系統(tǒng)下載安裝不同的JDK,例如windows下安裝針對(duì)于windows的JDK,linux下安裝針對(duì)于linux的JDK。(2)需要配置的相關(guān)環(huán)境變量?path:用于搜索外部命令,例如編譯程序的javac命令,執(zhí)行程序的java命令classpath:用于搜索類,即class文件,例如可以在不同的位置執(zhí)行類文件配置環(huán)境變量的方式:在我的電腦屬性中配置,持久有效6可以編寫Java程序的常見開發(fā)工具:記事本,EditPlus,ULTRAEDIT,Eclipse,Jbuilder

4、,NetBeans,Myeclipse等。7Java文件的類型:(1)擴(kuò)展名為java的文件:是Java源文件,屬于編譯之前的純文本文件,存儲(chǔ)java源代碼。(2)擴(kuò)展名為class的文件:是Java類文件,屬于編譯之后的二進(jìn)制文件,存儲(chǔ)字節(jié)碼。Java是半編譯半解釋語言。8第一個(gè)Java程序,例:javac HelloWorld.java生成HelloWorld.classjava HelloWorld運(yùn)行HelloWorld.classJava程序由類組成,main方法是整個(gè)程序的主入口。掌握main主方法的聲明。第2章 Java語言基礎(chǔ)第3章數(shù)組和字符串1Java語言中定義了3種注釋形式

5、:(1)/ 單行注釋,注釋到行尾(2)/*-*/ 單行或多行注釋(3)/*-*/可用于文檔化處理的單行或多行注釋2語句:Java語句以分號(hào)(;)結(jié)尾。語句塊:一個(gè)語句塊是以為邊界關(guān)鍵字:java中一些賦以特定的含義,并用作專門用途的單詞稱為關(guān)鍵字(keyword)所有java關(guān)鍵字都是小寫的。true和false雖然被用作特殊用途但不是關(guān)鍵字。Java關(guān)鍵字,見截圖P15頁表21。標(biāo)識(shí)符:標(biāo)識(shí)符用作給變量、類和方法命名,可以以下劃線,$,字母,中文開頭,首字母后可以跟字母、數(shù)字、下劃線、$、中文。標(biāo)識(shí)符區(qū)分大小寫,標(biāo)識(shí)符應(yīng)見名知意,簡(jiǎn)潔。Java語言區(qū)分大小寫。習(xí)慣上:類名:首字母大寫,其余字

6、母小寫,如果由多個(gè)單詞構(gòu)成,則每個(gè)單詞的首字母大寫。接口名:同類名變量名:首字母小寫,如果由多個(gè)單詞構(gòu)成,則每個(gè)單詞首字母大寫。方法名:同變量名。常量:全大寫,如果由多個(gè)單詞構(gòu)成,則用_連接。包名:全小寫。3數(shù)據(jù)類型 整數(shù)類型(byte、short、int、long) 數(shù)值型 簡(jiǎn)單數(shù)據(jù)類型 浮點(diǎn)類型(float、double) 字符型(char) 布爾型(boolean):true、false數(shù)據(jù)類型 類 (class) 引用數(shù)據(jù)類型 接口 (interface) 數(shù)組字符串(String)簡(jiǎn)單數(shù)據(jù)表示數(shù)的范圍:見P17頁表22、3。Char型數(shù)據(jù)用來表示通常意義上的字符,字符常量是用單引號(hào)括

7、起來的單個(gè)字符,java字符采用Unicode編碼,每個(gè)字符占兩個(gè)字節(jié),因而可以用16進(jìn)制編碼形式表示。Java語言還允許用轉(zhuǎn)義字符來改變字符的含義。轉(zhuǎn)義符見P20頁表24數(shù)據(jù)類型之間的轉(zhuǎn)換:ü Byte、short、char之間不會(huì)相互轉(zhuǎn)換,這三者在轉(zhuǎn)換時(shí)首先轉(zhuǎn)換為int類型。ü 當(dāng)系統(tǒng)需要的類型大于實(shí)際類型時(shí),數(shù)據(jù)自動(dòng)升級(jí),(賦值時(shí)左大于右),例:Byte b=18;int i=b;int x=67;double d=x;float f=8.3f;long l=f; errorü 當(dāng)系統(tǒng)需要的數(shù)據(jù)類型小于實(shí)際類型時(shí),數(shù)據(jù)需強(qiáng)制轉(zhuǎn)化。例:int i=10;byt

8、e b=(byte)i;double d=63.5;char c=(char)d;ü 有多種數(shù)據(jù)類型一起計(jì)算時(shí),系統(tǒng)首先自動(dòng)將所有數(shù)據(jù)類型轉(zhuǎn)換成容量最大的那種類型,然后再進(jìn)行計(jì)算。ü 數(shù)據(jù)類型大小關(guān)系如下:整數(shù)類:long > int > short > byte 浮點(diǎn)型:double > float 整型數(shù)據(jù)類型可以賦給浮點(diǎn)數(shù)據(jù)類型比如:float short float int float long double long 注意:char 可以賦給long和int ,但是不能賦給short 和byte(編譯錯(cuò)誤) 。char 可以賦給float和

9、double。byte b = (byte) true;這個(gè)轉(zhuǎn)換成立嗎?不成立,布爾值和數(shù)字是不兼容的,不能作任何轉(zhuǎn)換。4變量在java中,使用變量之前,必須先申明變量的類型。變量是java程序中最基本的存儲(chǔ)單元,其要素包括變量名,變量類型,和作用域。ü 聲明變量的語法:類型 變量名, 變量名=初值;例如:int i; char c; float a, b, c;一條聲明語句可以聲明多個(gè)變量:例:int i = 10,j;ü 變量的作用域變量的作用域指一個(gè)變量起作用的范圍,它決定了一個(gè)變量何時(shí)可以訪問、何時(shí)不可以訪問。Java中任何變量的作用域都從該變量聲明之后開始,并且只

10、在該聲明的語句塊中使用,也就是該變量只能在聲明它的那個(gè)花括號(hào)中使用。變量有分為成員變量(屬性)和局部變量。成員變量:在類中聲明的變量稱為成員變量。使用范圍:通常在類開始處聲明,可在整個(gè)類中使用。局部變量:在方法或塊(塊由兩個(gè)花括號(hào))中聲明的變量稱為局部變量。使用范圍:從聲明處開始到它所在方法或塊的結(jié)束處。例:int x = 4;/這之間只有x可以訪問int y = 1;/x和y可以訪問int z = 2;/x、y、z都可以訪問z = 5;x = 4;/只有x和y可以訪問,不可以訪問z 5常量常量就是程序里持續(xù)不變的值,是不能改變的數(shù)據(jù)。ü 聲明常量的格式如下:final 類型 常量名

11、,常量名=值;ü 整型常量:十進(jìn)制:不能以0開頭,多個(gè)09之間的數(shù)字十六進(jìn)制: 以0x或0X開頭 0x8a 0X56d八進(jìn)制:必須以0開頭 034 0376長整型:必須以L結(jié)尾 87L 345Lü 浮點(diǎn)數(shù)常量:float型:2e3f 0.6f double型:4.1d 1.23d 1.23ü 布爾常量:true 和 falseü 字符常量: a 5 ü 字符串常量:“hello” “8698” “nmain” 轉(zhuǎn)義字符n表示換行ü null常量:null,表示對(duì)象的引用為空。6. Java中的運(yùn)算符算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、賦值運(yùn)算符、

12、邏輯運(yùn)算符、位運(yùn)算符、條件運(yùn)算符ü 算術(shù)運(yùn)算符運(yùn)算符運(yùn)算范例結(jié)果+正號(hào)+33-負(fù)號(hào)b=4;-b;-4+加5+510-減6-42*乘3*412/除5/51%取模(求余)5%50+自增(前)a=2;b=+a;a=3;b=3;+自增(后)a=2;b=a+;a=3;b=2;-自減(前) a=2;b=-a;a=1;b=1;-自減(后)a=2;b=a-;a=1;b=2;+字符串相加“he”+“l(fā)lo” “hello”兩個(gè)整數(shù)之間的相除(/)運(yùn)算結(jié)果還是整數(shù),其結(jié)果是除法結(jié)果的整數(shù)部分。例如:5/2結(jié)果為2要獲得實(shí)數(shù)結(jié)果,運(yùn)算中至少一個(gè)浮點(diǎn)數(shù)。例如:5/2.0結(jié)果為2.5ü 關(guān)系運(yùn)算符運(yùn)

13、算符運(yùn)算范例結(jié)果=相等于4=3false!=不等于4!=3true<小于4<3 false>大于4>3true<=小于等于4<=3false>=大于等于4>=3trueü 賦值運(yùn)算符運(yùn)算符運(yùn)算范例結(jié)果=賦值a=3;b=2;a=3;b=2;+=加等于a=3;b=2;a+=b;a=5;b=2;=減等于a=3;b=2;a=b;a=1;b=2;*=乘等于a=3;b=2;a*=b;a=6;b=2;/=除等于a=3;b=2;a/=b;a=1;b=2;%=模等于a=3;b=2;a%=b;a=1;b=2;ü 邏輯運(yùn)算符運(yùn)算符運(yùn)算范例結(jié)果!NO

14、T(非)!truefalse&&AND(短路與)false && truefalse|OR(短路或)false | truetrue在使用短路與(&&)時(shí),如果第一個(gè)操作數(shù)(或表達(dá)式)為“假”,則不再計(jì)算第二個(gè)操作數(shù)(或表達(dá)式),直接返回“假”。在使用短路或(|)時(shí),如果第一個(gè)操作數(shù)(或表達(dá)式)為“真”,則不再計(jì)算第二個(gè)操作數(shù)(或表達(dá)式),直接返回“真”。邏輯運(yùn)算符只能用于布爾(boolean)類型之間;其結(jié)果值為布爾(boolean)類型。ü 條件運(yùn)算符條件運(yùn)算符是一個(gè)三目運(yùn)算符,也是唯一的一個(gè)三元運(yùn)算符,符號(hào)為“? :”,在程序中能

15、實(shí)現(xiàn)簡(jiǎn)單的判斷功能。語法格式:表達(dá)式1?表達(dá)式2:表達(dá)式3其中表示1是一個(gè)布爾表達(dá)式,如果表達(dá)式1結(jié)果為true,則執(zhí)行表達(dá)式2,否則執(zhí)行表達(dá)式3。舉例說明:求a,b的最大值。int a=4,b=6,max;max=a>b?a:b; /將a和b中的較大值賦給max7.Java中的控制語句(1) if(表達(dá)式).else.條件語句;(2) for(表達(dá)式). 循環(huán)語句;(3) while(表達(dá)式). 循環(huán)語句;(4) do.while(表達(dá)式).循環(huán)語句;(5) switch 多分支選擇結(jié)構(gòu);(6) continue 結(jié)束本次循環(huán)語句;(7) break 終止執(zhí)行switch或循環(huán)語句;(

16、8) return 從方法返回語句。8.條件語句分為四種:ü 單分支條件語句語法格式為:if(條件表達(dá)式) 語句或語句塊;ü 二分支條件語句語法格式為:if(條件表達(dá)式) 語句或語句塊1;else 語句或語句塊2;ü 嵌套條件語句語法格式為:if(條件表達(dá)式) if(條件表達(dá)式) 語句或語句塊;else 語句或語句塊2;ü 多分支條件語句語法格式為:if(條件表達(dá)式1) 語句或語句塊1;else if(條件表達(dá)式2) 語句或語句塊2; else if(條件表達(dá)式n) 語句或語句塊n;else 語句0;9.switch-case多分支選擇語句語法格式為:s

17、witch(條件表達(dá)式) case 常量1: 語句1;break;case 常量2: 語句2;break; case 常量N: 語句N; break;default:語句;break;注意:ü 條件表達(dá)式的返回值類型必須是以下類型之一:int、byte、char、short、枚舉常量。ü case子句中的值常量N必須是常量。且所有case子句中的值應(yīng)是不同的。ü default子句是可選的。ü break語句用來在執(zhí)行完一個(gè)case分支后,是程序跳出switch語句,即終止switch語句的執(zhí)行。在一些特殊情況下,如多個(gè)不同的case值要執(zhí)行一組相同的操

18、作,中間就可以不用break。10.for循環(huán)語句語法格式為:for(變量初始化表達(dá)式;循環(huán)條件表達(dá)式;迭代部分)語句或語句塊;/循環(huán)體 for循環(huán)可以再嵌套for循環(huán)。注意:在for循環(huán)的初始化或迭代部分,可以有多個(gè)表達(dá)式,表達(dá)式之間用逗號(hào)隔開。例如:int count =0;for(int a= 1,b=10;a<b;a+,b) count+; 共循環(huán)多少次?11.while循環(huán)語句語法格式為:while(循環(huán)條件 表達(dá)式) 語句或語句塊; 12.do-while循環(huán)語句語法格式為:do 語句或語句塊;while(表達(dá)式);(注意分號(hào)絕對(duì)不能省略)注:if語句和循環(huán)語句的花括號(hào)在執(zhí)行

19、的語句只有一句時(shí)可以省略。13continue結(jié)束本次循環(huán)語句使用continue語句可以立刻重新開始下一輪的循環(huán),而不再執(zhí)行循環(huán)后面的語句。14break終止執(zhí)行switch和循環(huán)語句使用break語句可以立刻終止循環(huán),開始執(zhí)行循環(huán)后面的語句。對(duì)于退出循環(huán):break和continue的區(qū)別:break是退出整個(gè)循環(huán);continue是退出當(dāng)前循環(huán)繼續(xù)下一次循環(huán)。循環(huán)結(jié)構(gòu)的使用:例1:求m,n的最大公約數(shù)。例2:菲波那契數(shù)列指的是這樣一個(gè)數(shù)列: 1,1,2,3,5,8,13,2115return從方法返回語句return語句主要作用是退出當(dāng)前方法,將程序控制轉(zhuǎn)移到方法的調(diào)用者。一般格式為:

20、return 值或表達(dá)式;16方法調(diào)用語句方法調(diào)用語句是執(zhí)行對(duì)象的某個(gè)方法。一個(gè)完整的方法調(diào)用語句由某個(gè)方法調(diào)用加上一個(gè)分號(hào)構(gòu)成。調(diào)用語法格式為:類對(duì)象名稱.方法名(參數(shù));例如: System.out.println(“This is a statement call a method!”); 調(diào)用對(duì)象System.out的println方法。17數(shù)組ü 定義:是用來存儲(chǔ)一組或多組相同類型數(shù)據(jù)的數(shù)據(jù)類型。ü 數(shù)據(jù)類型:可以是基本數(shù)據(jù)類型(例如:數(shù)字型、字符型、布爾型),也可以是復(fù)合數(shù)據(jù)類型(例如:數(shù)組、類、字符串和接口)。 數(shù)組本身就是一種復(fù)合數(shù)據(jù)類型,因此,數(shù)組的元素也

21、可以是數(shù)組,這樣就構(gòu)成了二維數(shù)組和多維數(shù)組。n 數(shù)組作為復(fù)合數(shù)據(jù)類型,與基本數(shù)據(jù)類型最大的區(qū)別:數(shù)組是通過引用來控制的,而基本數(shù)據(jù)類型是通過值來控制的。n 一維數(shù)組的聲明: 格式: 類型 數(shù)組名 ; 或 類型 數(shù)組名; 舉例:int a ; String b;n 數(shù)組的初始化有兩種方法:一種是直接初始化,另一種是動(dòng)態(tài)初始化。l 靜態(tài)初始化格式: 類型 數(shù)組名 = 值1,值2,值n;舉例:int a = 1,2,3; int b ; b = 1,2,3;l 動(dòng)態(tài)初始化:格式:(1)聲明時(shí)初始化: 類型 數(shù)組名 = new 類型 數(shù)組長度;(2)聲明后初始化:類型 數(shù)組名 ; 數(shù)組名 = new

22、類型數(shù)組長度;注:數(shù)組的大小一經(jīng)創(chuàng)建可不可以改變大小了?不可以,數(shù)組是定長的,一經(jīng)創(chuàng)建就不能再改變大小了n 訪問數(shù)組元素?cái)?shù)組元素是通過數(shù)組名和下標(biāo)來訪問。未被初始化的數(shù)組,不能進(jìn)行訪問。格式:數(shù)組名下標(biāo)Java中,數(shù)組的下標(biāo)從0開始,直到 <數(shù)組長度-1>結(jié)束。獲得數(shù)組的長度,通過length屬性來獲得:數(shù)組名.lengthn 數(shù)組的復(fù)制 方法: System.arraycopy(源數(shù)組,源數(shù)組起始位置,目標(biāo)數(shù)組,目標(biāo)數(shù)組起始位置,長度); 注:不管是要復(fù)制的數(shù)組,還是被復(fù)制的數(shù)組,都必須先初始化。例:int a = 1,2,3, b = new int3; System.arra

23、ycopy(a,0,b,0,3); /將數(shù)組a復(fù)制到bn 對(duì)象數(shù)組: 例:/定義一個(gè)對(duì)象數(shù)組,StringBuffer是一個(gè)字符串緩存類StringBuffer a = new StringBuffer2;/給對(duì)象賦值a0 = new StringBuffer(“Array0”);a1 = new StringBuffer(“Array1”);System.out.println(“a0=” + a0 + “ a1=” + a1 );a0.append(“ is Modified”); /追加字符串System.out.println(“a0=” + a0);注:請(qǐng)回顧String和Strin

24、gBuffer的區(qū)別ü 字符串的常用方法有哪些?P46-P49length()方法:求字符串的長度compareTo():比較字符串的大小equals():比較字符串是否相等trim():去除字符串首尾空格charAt()方法:可以返回指定位置的字符substring()方法:截取指定位置的子串indexOf()方法:查找子串的位置toLowerCase(), toUpperCase()方法:字符串大小寫轉(zhuǎn)換n 二維數(shù)組和多維數(shù)組 定義格式:類型 數(shù)組名 ; 或 類型 數(shù)組名; 舉例: int a ; double b;這幾種定義不合法:int a2 ; int b 2; int c

25、22;二維數(shù)組的初始化:二維數(shù)組的初始化也有直接和動(dòng)態(tài)初始化兩種方式。l 直接初始化格式: 類型 數(shù)組名= 值1,值2,值n , 值1,值2,值n.; 舉例:int a = 1,2,3,4,5,6,7,8,9;l 動(dòng)態(tài)初始化格式類型 數(shù)組名=new 類型長度1長度2; 長度1:表示行,長度2:表示列。 例:int a=newint35;類型 數(shù)組名=new 類型長度1;數(shù)組名0=new 類型長度20;數(shù)組名1=new 類型長度21;數(shù)組名長度1-1=new 類型長度2n;例:int a; a=new int3;a0=new int5; a1=new int8; a2=new int6;注:?jiǎn)?

26、:聲明int a = new int3,a是一個(gè)二維數(shù)組,a0本身是什么類型的?二維數(shù)組的元素都是一維數(shù)組,a0是int類型的問2:可以把2個(gè)int型,3個(gè)double型,4個(gè)String型的值放到一個(gè)數(shù)組中嗎?不可以,數(shù)組的元素類型必須是相同類型的。問3:操作數(shù)組比較方便的實(shí)用類?java.util.Arrays類提供了很多關(guān)于數(shù)組的實(shí)用方法n 數(shù)組的應(yīng)用例1:將整數(shù)序列3,15,28,11,34,78,95,27,18首末顛倒過來。int a = 3,15,28,11,34,78,95,27,18; int i, length, temp; length = a.length; for(i

27、=0;i<(length/2);i+) /以下將數(shù)組元素ai和alength -1 - i的值互換 temp = ai; ai = alength -1 i; alength -1 i = temp; for(i=0;i<length;i+) System.out.print(ai + “ ”); 例2:從數(shù)據(jù):32 25 78 69 13 97 86 38 62 9 中找到數(shù)據(jù)97所在的位置。用順序查找(線性查找)方法編寫程序。/聲明并初始化數(shù)組int a = 32,25,78,69,13,97,86,38,62,9; int index = -1,i;/逐個(gè)元素與97相比較,找

28、到則退出循環(huán),否則繼續(xù)for(i=0;i<a.length;i+)if(ai = 97) index = i; break; if(index = -1) /表示該數(shù)不存在System.out.println(“ 97這個(gè)數(shù)不存在!”); elseSystem.out.println(“97這個(gè)數(shù)的下標(biāo)是: ” + index); 例3:將數(shù)據(jù):37 28 51 13 64為例,用冒泡法進(jìn)行升序排列。 int a = 37,28,51,13,64; int i, j, n, temp; n = a.length; for(j=1;j < n ;j+ ) /共執(zhí)行 n1 輪 for(

29、i=0;i< n j; i+) /第j輪 if (ai > ai+1) /交換ai與ai+1的值 temp = ai; ai = ai+1; ai+1 = temp; /打印排序后的結(jié)果 for(i=0;i < n;i+) System.out.print(ai + “ ”); 例4:兩個(gè)矩陣相乘的例子。/聲明并初始化數(shù)組 int a = 8,13,4,7,5,2; int b = 3,4,11,6,1,10; int result = new int33; int i,j,k; /通過嵌套循環(huán)實(shí)現(xiàn)矩陣相乘的運(yùn)算 for(i=0;i<a.length;i+) for(j

30、=0;j<bi.length;j+) resultij = 0; for(k=0;k<b.length;k+) resultij += aik * bkj; /打印結(jié)果 System.out.println(“The result of a * b is : ”); for(i=0;i<result.length;i+) for(j=0;j<result i.length;j+) System.out.print(resultij + “ ”); System.out.println( ); /換行 第4章 對(duì)象和類 & 第5章構(gòu)造方法、重載和封裝第6章繼承和多

31、態(tài)第7章抽象類和接口1. OOP是:Object Oriented Programming(面向?qū)ο缶幊?類和對(duì)象的區(qū)別 :類:生成對(duì)象的模板,是對(duì)一類事物的描述,是抽象的概念上的定義。對(duì)象:對(duì)象是實(shí)際存在的該類事物的每個(gè)個(gè)體,因而也稱為實(shí)例。2Java中類的定義格式: 類的修飾符 class 類名 extends 父類名 變量聲明; 構(gòu)造方法定義; 其他方法定義;聲明成員變量:public | protected | private static final 類型名 成員變量名;創(chuàng)建一個(gè)類的對(duì)象的格式: 類名 對(duì)象名=new構(gòu)造方法(實(shí)際參數(shù));在類的外部,訪問類中的變量和調(diào)用類中

32、的方法格式: 對(duì)象名.變量名 對(duì)象名.方法名(實(shí)際參數(shù)) 方法的定義格式: public | protected | private 返回值類型 方法名(參數(shù)列表) throws 異常 .; 3類的修飾符(1)類訪問權(quán)限修飾符:public(公共的)用關(guān)鍵字public修飾一個(gè)類,表明該類可以被任何其他類使用。如果省略,則這個(gè)類只能在它所在包中訪問。 (2)abstract(抽象的)用abstract修飾的類是一個(gè)不完整的類,稱為抽象類,該類中含有沒有方法體的抽象方法。抽象類沒有具體實(shí)例。(3)final(最終的)用final修飾的類稱為最終類。最終類不能有子類。4類的成員一個(gè)類定義中主要可以

33、有以下2種類型的成員。(1)屬性(成員變量)類中聲明的變量稱為域,用來描述類的屬性或狀態(tài)。一個(gè)類中的域既可以是基本數(shù)據(jù)類型,也可以是其他類的對(duì)象等。(2)方法(method)是對(duì)類中變量進(jìn)行操作的可執(zhí)行代碼序列,定義了該類對(duì)象所具有的行為。5屬性的初始化一個(gè)類中如果沒有定義構(gòu)造方法,則編譯器會(huì)自動(dòng)生成一個(gè)沒有參數(shù)的構(gòu)造方法,用來初始化類對(duì)象,并將類中變量自動(dòng)初始化為該類型的默認(rèn)值。 整型初始化為0; 實(shí)型初始化為0.0f、0.0d; 邏輯型初始化為false; 字符型初始化為 u0000; 類對(duì)象初始化為null,表明引用不指向任何內(nèi)存地址。6成員變量的訪問控制類的屬性在類的里面都是可見的,類

34、中的所有方法都可以使用它們。在類的外部,類中屬性的可見性由關(guān)鍵字public、private、protected來控制,稱為類的屬性的訪問權(quán)限修飾符。 4種訪問權(quán)限所使用的修飾符和含義: public:用public修飾的成員可以被所有其他的類來訪問。 private:類中限定為private的成員只能被這個(gè)類本身訪問,在類的外部,類的private成員是不可見的 。 protected:類中限定為protected成員。只有其子類(不論是否在同一個(gè)包中)以及同一個(gè)包內(nèi)的其他類,才能訪問該類的protected成員。 缺省的:這時(shí)類的成員具有包訪問權(quán)限。注意:方法定義中的參數(shù)和方法體中的變量都

35、是局部變量,不能使用上面的訪問權(quán)限修飾符。7方法的訪問控制修飾符方法作為類的成員也有4種訪問權(quán)限:public、private、protected和缺省的(沒有訪問控制修飾符)。含義與成員變量相同。8封裝和公開如果把類中的變量用public修飾,則這些變量完全公開,可以直接訪問和修改。面向?qū)ο蟪绦蛟O(shè)計(jì)中,通過類和類成員的訪問控制級(jí)別的限定,較好地解決了封裝和公開的問題。如果將成員變量標(biāo)識(shí)為private,則它在類的外部不可見,使數(shù)據(jù)得到了封裝。為了能夠訪問這些私有數(shù)據(jù),就必須提供public或者protected的成員方法來獲取(get)和設(shè)置(set)這些private變量的值。通常獲取和設(shè)

36、置private變量的方法命名采用以下形式: public|protected 變量類型 get變量名() return 變量名; public|protected void set變量名(類型 參數(shù)名) 合法性檢查并賦值; 9靜態(tài)變量用static修飾的變量稱為靜態(tài)變量。 當(dāng)一個(gè)變量用static修飾時(shí),表明它不屬于任何一個(gè)類的具體對(duì)象,而是所有對(duì)象共享,static變量這個(gè)存儲(chǔ)單元被所有對(duì)象共享。該類的任何一個(gè)對(duì)象訪問和修改它時(shí),都是對(duì)這個(gè)共享的存儲(chǔ)單元進(jìn)行操作。由于靜態(tài)變量屬于整個(gè)類,即使沒有創(chuàng)建任何對(duì)象時(shí),類中的static變量也會(huì)存在,也可以使用靜態(tài)變量,這時(shí)可以通過類名作前綴訪問靜

37、態(tài)變量: 類名.靜態(tài)變量若創(chuàng)建了某個(gè)類的具體對(duì)象后,可以通過類名或?qū)ο竺髑熬Y訪問靜態(tài)變量: 對(duì)象名.靜態(tài)變量10最終變量(final)若類中的變量用關(guān)鍵字final修飾,則表明該變量一旦被顯示的值(不能默認(rèn)初始化)初始化后就不可能重新再賦值。因此,final修飾的變量通常是程序中不能改變的常量 。public static final 類型 常量名=初始值;常量名大寫,名字中包含多個(gè)單字時(shí)用下劃線分隔。圓周率常量Math.PI、自然常數(shù)Math.E等?;緮?shù)據(jù)類型包裝類中的int類型的最大值Integer.MAX_VALUE、最小值Integer.MIN_VALUE等。用final修飾的引用

38、變量,也不能重新賦值來引用另一個(gè)對(duì)象,但可以修改final修飾的引用對(duì)象內(nèi)的數(shù)據(jù)。11靜態(tài)(static)方法用static修飾的方法稱為靜態(tài)方法,它不屬于類的具體對(duì)象,而是整個(gè)類的類方法。兩種方式調(diào)用靜態(tài)方法: 類名.靜態(tài)方法 對(duì)象名.靜態(tài)方法一個(gè)類里面的靜態(tài)方法中只能處理靜態(tài)變量;靜態(tài)方法中只能調(diào)用靜態(tài)方法。12最終(final)方法關(guān)鍵字final可用來修飾類中的方法,稱為最終方法。將一個(gè)方法標(biāo)識(shí)為final的主要目的是防止子類重新定義繼承自父類的方法。 13抽象(abstract)方法用關(guān)鍵字abstract修飾的方法,稱為抽象方法。抽象方法只有方法頭,沒有方法體,而是以一個(gè)分號(hào)結(jié)束。

39、抽象方法的聲明通常出現(xiàn)在抽象類和接口中。方法修飾符abstract和final不可能同時(shí)使用。14構(gòu)造方法ü 構(gòu)造方法的規(guī)則 構(gòu)造方法名稱必須與類名相同。 構(gòu)造方法一定不能有返回值類型。 構(gòu)造方法可以使用3種訪問控制修飾符public、protected、private或缺省的,對(duì)應(yīng)的訪問級(jí)別與類成員一樣。 構(gòu)造方法不能用static修飾,因?yàn)闃?gòu)造方法只用于創(chuàng)建類的實(shí)例。 如果類中不定義任何構(gòu)造方法,編譯器會(huì)自動(dòng)生成默認(rèn)的無參數(shù)的構(gòu)造方法;如果類中定義了構(gòu)造方法,編譯器不會(huì)自動(dòng)生成默認(rèn)構(gòu)造方法。 類中的構(gòu)造方法可以根據(jù)需要重載多個(gè)參數(shù)列表不同的版本。這些重載的構(gòu)造方法可以相互調(diào)用,但

40、必須通過this()調(diào)用,且必須作為構(gòu)造方法內(nèi)的第一條語句。 子類構(gòu)造方法中可以調(diào)用其直接父類的構(gòu)造方法,但必須通過super()調(diào)用,且必須作為子類構(gòu)造方法內(nèi)的第一條語句。15構(gòu)造方法的重載當(dāng)一個(gè)類因構(gòu)造方法的重載而存在多個(gè)構(gòu)造方法時(shí),創(chuàng)建該類的對(duì)象的語句會(huì)根據(jù)給出的實(shí)際參數(shù)的個(gè)數(shù)、參數(shù)的類型、參數(shù)的順序自動(dòng)調(diào)用相應(yīng)的構(gòu)造方法來完成對(duì)象的初始化工作。當(dāng)一個(gè)類有多個(gè)重載的構(gòu)造方法時(shí),構(gòu)造方法里面可以調(diào)用類的其他構(gòu)造方法,但必須通過this()調(diào)用,且必須作為構(gòu)造方法內(nèi)的第一條語句。 16關(guān)鍵字this 類定義中使用this,當(dāng)創(chuàng)建該類的對(duì)象后,this代表類對(duì)象自身。 類中通過this、后跟圓

41、點(diǎn)運(yùn)算符,之后是類的實(shí)例變量名或?qū)嵗椒梢允褂帽绢愔械淖兞亢头椒?。this.變量 this.方法() 靜態(tài)變量和靜態(tài)方法不能通過this作前綴來使用。 類中有多個(gè)重載的構(gòu)造方法時(shí),構(gòu)造方法中可以通過this()調(diào)用其他構(gòu)造方法,但必須是構(gòu)造方法中的第一條語句。17類成員的繼承和重新定義ü 定義子類的格式類的修飾符 class B extends A 類的變量定義; 構(gòu)造方法定義; 方法定義;關(guān)鍵字extends表示繼承關(guān)系,即類B是類A的子類、類A是類B的父類。注:Java中一個(gè)類只能有一個(gè)直接父類,稱為單繼承,但一個(gè)父類可以派生多個(gè)子類。Java的根類是Object類。 

42、52; 類成員的繼承子類繼承某個(gè)父類后,子類便具有父類的特性,從程序代碼的角度來說,子類便擁有了父類的所有非私有(private)變量和方法,這些變量和方法通過繼承都變成了子類的成員。 ü 子類添加成員在子類中可以加入自己的變量和方法。ü 重新定義從父類繼承來的成員變量隱藏和方法覆蓋 變量隱藏當(dāng)一個(gè)父類變量不適合子類時(shí),子類可以把從父類繼承來的同名變量重新定義。子類若要引用父類的同名變量,要用關(guān)鍵字super作前綴加圓點(diǎn)操作符引用父類的同名變量: super.變量名 方法覆蓋(方法重寫)把從父類繼承來的方法重寫,稱為方法覆蓋(重寫)。子類重寫父類的方法時(shí),方法頭要與父類一樣

43、,只是對(duì)方法體重寫,從而完成滿足子類的要求。 如果子類中調(diào)用被覆蓋的父類中的同名方法,通過super關(guān)鍵字作前綴加圓點(diǎn)操作符實(shí)現(xiàn)調(diào)用: super.方法名()ü 方法覆蓋的規(guī)則參數(shù)列表完全相同;返回類型相同;子類方法訪問權(quán)限不能縮??;子類方法不能拋出新的異常。 ü 方法覆蓋與方法重載的區(qū)別:方法的重載是指:在同一個(gè)類里定義多個(gè)同名方法,它們的參數(shù)列表不同,可以有不同的返回值類型。重載方法調(diào)用時(shí)根據(jù)其參數(shù)類型、個(gè)數(shù)和順序來區(qū)分。方法覆蓋(重寫)是指:子類把繼承來的方法重新定義,即在不同的類里定義同名的方法,方法頭一樣,但方法體不同,即方法實(shí)現(xiàn)的功能不同,從而滿足子類自己的特殊

44、要求。 18關(guān)鍵字super關(guān)鍵字super的使用規(guī)則: super.變量名:引用被子類隱藏的父類中的變量; super.方法名:調(diào)用被子類覆蓋的父類中的方法; super(參數(shù)):子類構(gòu)造方法中調(diào)用父類構(gòu)造方法,但必須是子類構(gòu)造方法中的第一條語句。this( )和super( )調(diào)用只能有其一,不能同時(shí)都有。19父類和子類對(duì)象的轉(zhuǎn)換Java語言允許父類對(duì)象和子類的對(duì)象之間進(jìn)行類型轉(zhuǎn)換。子類對(duì)象可以自動(dòng)向父類對(duì)象轉(zhuǎn)換,但父類對(duì)象轉(zhuǎn)換為子類對(duì)象時(shí),必須要強(qiáng)制類型轉(zhuǎn)換,轉(zhuǎn)換的格式為: (子類名)父類對(duì)象注:當(dāng)子類實(shí)例賦值給父類對(duì)象引用后,父類對(duì)象引用的實(shí)際上是子類實(shí)例,但通過這個(gè)父類引用只能引用子

45、類中繼承下來的那些成員。即若成員變量出現(xiàn)隱藏,引用的是父類變量。但若成員方法出現(xiàn)覆蓋,引用的是子類方法。例:public class Animal public class Cat extends Animal n Cat c1= new Cat(); n Animal a = c1;20提問:ü 一個(gè)java源文件可以寫多個(gè)類嗎?o 可以,但必須只能有一個(gè)公有類,并且文件名和公有類的類名相同。ü 類中有哪些成員?有屬性(成員變量),方法,構(gòu)造器(構(gòu)造方法)ü 構(gòu)造方法和普通方法的區(qū)別?構(gòu)造方法沒有返回值,方法名必須和類名相同,需要用new語句調(diào)用構(gòu)造方法。

46、52; 實(shí)例成員和靜態(tài)成員的區(qū)別?實(shí)例成員:是屬于對(duì)象實(shí)例的,用對(duì)象.成員名稱語法調(diào)用靜態(tài)成員:和對(duì)象實(shí)例無關(guān),是屬于類本身的,用類名.成員名稱語法調(diào)用ü 靜態(tài)方法可不可以直接調(diào)用同一個(gè)類中的非靜態(tài)方法?不可以,靜態(tài)方法不能直接調(diào)用一個(gè)非靜態(tài)成員,需要用對(duì)象調(diào)用。ü 類的繼承是誰繼承誰?是子類繼承了父類,子類也稱為派生類,父類也稱為超類或基類ü 子類繼承了父類的什么東西? 子類可以繼承父類的數(shù)據(jù)域(屬性),方法,但構(gòu)造器不能繼承ü 私有成員能被子類繼承嗎?不能繼承。ü Object是什么類?這個(gè)所有類的根類,任何類如果沒有寫顯式的繼承語句,默認(rèn)

47、都是直接繼承Object類的ü java中是單繼承還是多繼承?是單繼承,一個(gè)子類只能有一個(gè)父類21方法調(diào)用過程中參數(shù)的傳遞:按值傳遞,但不同類型參數(shù),效果不同。要求結(jié)合程序會(huì)分析程序運(yùn)行結(jié)果。21抽象類一種表示抽象概念、不能被實(shí)例化的類,其作用是為派生類提供一個(gè)恰當(dāng)?shù)母割?。Java中的抽象方法是只有方法頭、沒有方法體的方法。如果一個(gè)類中包含抽象方法,則該類必須聲明為abstract。抽象方法只能存在于抽象類(或接口)中。如果一個(gè)類繼承自某個(gè)抽象類,而沒有具體實(shí)現(xiàn)其父類中的所有抽象方法,則該類也必須聲明為抽象類(用abstract修飾)。 22接口(interface)接口實(shí)現(xiàn)了與類的

48、多繼承相似的功能。Java語言的接口中,只能定義靜態(tài)常量和抽象方法。由于接口中包含的方法都是抽象方法,因此, Java中的接口可以看成是一個(gè)沒有具體實(shí)現(xiàn)的“類”。接口需要定義類來實(shí)現(xiàn),都可以在類聲明中使用關(guān)鍵字implements來聲明實(shí)現(xiàn)某些接口。 接口的定義中包含的是抽象方法,而編寫抽象方法的方法體,實(shí)現(xiàn)方法的特定功能都是在實(shí)現(xiàn)接口的類中具體完成的 。接口也可以繼承。一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口。 23自定義接口和實(shí)現(xiàn)接口ü 定義好的接口,如果自成一個(gè)文件,文件名保存為:接口名.java。ü 接口的定義格式:public interface 接口名稱 extends 父接

49、口名列表 /靜態(tài)常量 publicstaticfinal 數(shù)據(jù)類型 變量名=常量值; /抽象方法 publicabstract 返回值類型 方法名(參數(shù)列表); 說明:(1)接口中的成員變量必須是public(公有的)、static(靜態(tài)的)和final(最終的)。 (2)接口中的成員方法必須是public(公共的)和abstract(抽象的)。 (3)接口也具有繼承性,通過關(guān)鍵字extends表明繼承關(guān)系。 24實(shí)現(xiàn)接口一個(gè)類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口,聲明實(shí)現(xiàn)接口的關(guān)鍵字是implements,后跟要實(shí)現(xiàn)的接口名。如果接口中有多個(gè)抽象方法,而實(shí)現(xiàn)接口的類只需使用其中的一個(gè),也必須為其他抽象方法加上花括號(hào),只是花括號(hào)中沒有語句。ü 實(shí)現(xiàn)接口的類定義格式: 修飾符 class 類名 extends 父類名 implements 接口A,接口B, 類的成員變量和成員方法; 為接口A中的所有方法編寫方法體,實(shí)現(xiàn)接口A; 為接口B中的所有方法編寫方法體,實(shí)現(xiàn)接口B; 25包包實(shí)際上就是物理上的文件夾,可以把類放到不同的包中。問題:&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論