




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
§3-2學(xué)生成績(jī)處理Java面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)目標(biāo)任務(wù)分析
在學(xué)生信息處理中不僅需要處理學(xué)生對(duì)象包括的學(xué)號(hào)、姓名等這些基本信息,還要包括學(xué)生的選課情況,記錄每門課程的成績(jī),并對(duì)學(xué)生個(gè)人或班級(jí)成績(jī)進(jìn)行一些統(tǒng)計(jì)分析方面的處理。要完成這些功能就涉及到類中方法的定義、調(diào)用等基本知識(shí)。教學(xué)內(nèi)容1成員類別方法的定義及調(diào)用23this關(guān)鍵字變量作用域45類及成員的訪問權(quán)限main()方法中的參數(shù)6一、方法定義及調(diào)用方法定義的一般格式:
[方法修飾符]返回值類型方法名([形式參數(shù)列表]){
方法體
}方法定義包括:方法聲明(方法首部)和方法體兩部分。如:
publicvoidshowInf(){//定義方法
System.out.println(sid+"\t"+sname+"\t"+sage);
}類中的成員分為兩類:表示屬性的變量成員和表示行為的方法成員。在一個(gè)類中方法成員可以沒有,也可以有多個(gè),它非常類似與其他高級(jí)語(yǔ)言的函數(shù)或過程,方法就是一段用來(lái)完成某項(xiàng)任務(wù)的程序代碼。classCircle{
doubleradius;
doublecircumference()
{
return2*3.14159*radius;
}
}return語(yǔ)句的基本格式為:
return[表達(dá)式];一、方法定義及調(diào)用方法首部需要聲明的內(nèi)容1)修飾符。用來(lái)對(duì)定義的方法作某些限定,這些修飾符可以分為訪問權(quán)限控制符和非訪問權(quán)限控制符兩種。如public等。2)返回值類型。返回值類型指定了方法被執(zhí)行后需要返回的數(shù)據(jù)類型,可以是任何合法有效的類型,包括用戶創(chuàng)建的類的類型。如果該方法不返回任何值,則它的返回值類型必須為void。3)方法名。方法名由用戶指定,可以是任何合法的標(biāo)識(shí)符,并盡量做到見名知義。4)形式參數(shù)列表。形式參數(shù)列表是一個(gè)或多個(gè)形參類型的聲明,多個(gè)形參時(shí)用逗號(hào)分隔。形參用于接收方法被調(diào)用時(shí)傳遞給方法的參數(shù)值。如果方法被調(diào)用不需要傳遞參數(shù),那么參數(shù)表為空。所以,一個(gè)方法可以有多個(gè)形式參數(shù),也可以沒有。形參列表中應(yīng)該對(duì)每一個(gè)形式參數(shù)進(jìn)行獨(dú)立的數(shù)據(jù)類型說明。如:max(intnum1,intnum2)而不能說明為max(intnum1,num2)。一、方法定義及調(diào)用方法體方法體是方法定義的核心,是對(duì)方法功能的實(shí)現(xiàn)。其中它包括變量的聲明以及一組定義方法功能的語(yǔ)句集合。有返回值的方法必須使用關(guān)鍵字return返回方法的值,而返回值類型為void的方法則可以沒有return語(yǔ)句。return語(yǔ)句的基本格式為:
return[表達(dá)式];如:Circle類中定義一個(gè)計(jì)算周長(zhǎng)的方法。
classCircle{
doubleradius;
doublecircumference(){
return2*3.14159*radius;
}
}一、方法定義及調(diào)用【例3-6】定義一個(gè)方法,求三個(gè)整數(shù)中的最大值。importjava.util.Scanner;publicclassMax3{
intmaxFrom3(intx,inty,intz){//x、y、z為形參 intmax; if(x>y) max=x; else
max=y;
if(max<z) max=z; returnmax;
}
publicstaticvoidmain(Stringargs[]){//主方法Max3max=newMax3();
//創(chuàng)建Max3對(duì)象
Scannerin=newScanner(System.in);intm;System.out.print("請(qǐng)輸入3個(gè)數(shù):");inta=in.nextInt();intb=in.nextInt();intc=in.nextInt();m=max.maxFrom3(a,b,c);//調(diào)用類方法maxFrom3(),a、b、c為實(shí)參System.out.println("Max="+m);}}一、方法定義及調(diào)用方法調(diào)用的一般格式為:
對(duì)象名.方法名([實(shí)參列表]);如:st.showInf();
classCircle{
doubleradius;
voidsetR(doubler){
radius=r;}
doublecircumference(){
return2*3.14159*radius;
}
}一個(gè)方法只有被調(diào)用后,其程序代碼才能被執(zhí)行publicclassCircleTest{
publicstaticvoidmain(String[]args){ Circlec1=newCircle();
c1.setR(5.5); System.out.println("半徑為:"+c1.radius+"圓的周長(zhǎng)為:"+c1.circumference());
}}一、方法定義及調(diào)用【例3-7】利用已定義的類Box,分別計(jì)算長(zhǎng)、寬、高分別為10、20、15和3、6、9的長(zhǎng)方體的體積。classBox{ //定義Box類
doublelenth;
doublewidth; //定義成員變量
doubleheight;//定義設(shè)置長(zhǎng)方體長(zhǎng)、寬、高的方法
voidsetlwh(doublelsetlwh,doublew,doubleh){
lenth=l;
width=w;
height=h;
}
doublevolume(){//定義計(jì)算長(zhǎng)方體體積的方法
returnlenth*width*height;
}}
classBoxDemo3{
publicstaticvoidmain(Stringargs[]){
Boxmybox1=newBox();
Boxmybox2=newBox();
doublevol;
mybox1.setlwh(10,20,15);//無(wú)返回值的調(diào)用
mybox2.setlwh(3,6,9);
vol=mybox1.volume();//有返回值的調(diào)用
System.out.println("mybox1的體積是:"+vol);
vol=mybox2.volume();
System.out.println("mybox2的體積是:"+vol);
}
}一、方法定義及調(diào)用方法調(diào)用過程當(dāng)程序調(diào)用方法時(shí),程序執(zhí)行流程將跳轉(zhuǎn)到被調(diào)用的方法中,直到執(zhí)行return語(yǔ)句或遇到方法結(jié)束標(biāo)志,同時(shí)程序執(zhí)行流程轉(zhuǎn)到該方法的被調(diào)處,繼續(xù)后續(xù)程序的執(zhí)行。參數(shù)傳遞方法Java中參數(shù)的傳遞方式有兩種:值傳遞和引用傳遞。當(dāng)參數(shù)的類型為基本數(shù)據(jù)類型時(shí)采用值傳遞,當(dāng)參數(shù)類型為對(duì)象類型或數(shù)組時(shí),采用引用傳遞方式。值傳遞:實(shí)參的值傳遞給形參變量。引用傳遞:將實(shí)參對(duì)象的引用傳遞給形參。一、方法定義及調(diào)用【例3-8】以基本類型數(shù)據(jù)為參數(shù)的方法調(diào)用。publicclassTestPassByValue{
publicstaticvoidmain(String[]args){
intnum1=1;
intnum2=2;
System.out.println("調(diào)用swap方法之前,num1的值:"+num1+",num2的值:"+num2);
swap(num1,num2); //調(diào)用swap方法
System.out.println("調(diào)用swap方法之后,num1的值:"+num1+",num2的值:"+num2);}
staticvoidswap(intn1,intn2){ //交換n1、n2兩個(gè)形參變量的值
System.out.println("-----swap方法內(nèi)部--------");
System.out.println("n1、n2的值交換之前n1的值:"+n1+"n2的值:"+n2);
inttemp=n1;
n1=n2;
n2=temp;
System.out.println("n1、n2的值交換之后n1的值:"+n1+"n2的值:"+n2);
}}一、方法定義及調(diào)用【例3-9】以對(duì)象作為參數(shù)的方法調(diào)用。classCircle{
doubleradius=1.0;
doublefindArea(){
returnradius*radius*3.14159;
}}
publicclassTestPassingObject{
publicstaticvoidmain(String[]args){CirclemyCircle=newCircle();intn=5;printAreas(myCircle,n);//對(duì)象myCircle作為實(shí)參System.out.println("\n"+"半徑是:"+myCircle.radius);System.out.println("n的值為:"+n);
}
publicstaticvoidprintAreas(Circlec,inttimes){//c為對(duì)象類型的形參
System.out.println("半徑\t\t面積");
while(times>=1){
System.out.println(c.radius+"\t\t"+c.findArea());
c.radius++;
times--;
}
}}二、成員類別關(guān)鍵字static表示靜態(tài),可以修飾屬性和方法,被static修飾的成員稱之為靜態(tài)成員(或類成員),包括靜態(tài)變量或靜態(tài)方法,不被static修飾的成員稱為實(shí)例成員(或?qū)ο蟪蓡T),包括實(shí)例變量或?qū)嵗椒?。?shí)例成員引用方法:對(duì)象名.成員類成員引用可通過兩種方法:類名.成員或?qū)ο竺?成員
類中表示屬性的變量和表示行為的方法均稱為類的成員。這些成員又分為實(shí)例成員(或稱對(duì)象成員)和靜態(tài)成員(或稱類成員)。classCircle{
static
doubleradius;
doublecircumference()
{
return2*3.14159*radius;
}
static
doublearea()
{
return3.14159*radius*radius;
}
}二、成員類別類(靜態(tài))成員具備以下特點(diǎn)
1)靜態(tài)成員是屬于類的,隨著類的加載而加載,并完成了初始化。
2)被所有對(duì)象共享。3)可以直接被類名調(diào)用。類(靜態(tài))成員使用上需要注意以下幾點(diǎn)1)靜態(tài)方法中只能訪問靜態(tài)成員(包括主方法中)2)靜態(tài)方法中不可以使用this,super關(guān)鍵字類中表示屬性的變量和表示行為的方法均稱為類的成員。這些成員根據(jù)其使用上的差別又分為實(shí)例成員(或稱對(duì)象成員)和靜態(tài)成員(或稱類成員)。classCircle{
static
doubleradius;
doublecircumference()
{
return2*3.14159*radius;
}
static
doublearea()
{
return3.14159*radius*radius;
}
}二、成員類別【例3-10】類變量與實(shí)例變量使用比較。classTest{
staticinti;//定義i為類變量intj;//定義j為實(shí)例變量publicvoidprintVar(){
intk=0;i++;j++;k++;System.out.println(”i=”+i+”j=”+j+”k=”+k);}}publicclassMainTest{
publicstaticvoidmain(Stringargs[]){
Testc1=newTest();
c1.printVar();
c1.printVar();
Testc2=newTest();
c2.printVar();
c2.printVar();
}}二、成員類別【例3-11】利用類變量計(jì)算長(zhǎng)方體的體積。classBox4{ doublelenth;doublewidth;staticdoubleheight=5;//定義類變量}publicclassBoxDemo4{ publicstaticvoidmain(String[]args){ Box4mybox1=newBox4(); Box4mybox2=newBox4(); doublevol;//main()方法內(nèi)的變量,是局部變量 mybox1.lenth=10; mybox1.width=20; mybox2.lenth=3; mybox2.width=6; vol=mybox1.lenth*mybox1.width*Box4.height;//訪問類變量height System.out.println("mybox1的體積是:"+vol); vol=mybox2.lenth*mybox2.width*Box4.height;//訪問類變量height System.out.println("mybox2的體積是:"+vol); }}二、成員類別【例3-12】類方法或靜態(tài)方法的使用。classStaticClass{
staticinta=42;
staticintb=99;
staticvoidcallme(){//定義類方法callme()System.out.println("a="+a);}}classTestStaticClass{
publicstaticvoidmain(Stringargs[]){StaticClass.callme();//調(diào)用類方法callme()
System.out.println("b="+StaticClass.b);//訪問類變量b
}}三、變量作用域全局變量定義在方法之外的變量為全局變量,它的作用域是整個(gè)類。如:publicclassCircle{
voidsetR(doubler){radius=r;}doublecircumference(){return2*3.14159*radius;}
doubleradius;}變量作用域:變量可以使用的范圍。Java變量分為:全局變量和局部變量。局部變量定義在方法內(nèi)部的變量(包括形參),只能在該方法(或塊)內(nèi)部使用。如:classsameName{
inta=10;publicstaticvoidmain(Stringargs[]){
inta=20;System.out.println(“a=”+a);}}再如:for(inti=1;i<=10;i++){
System.out.println(i);
}
變量的使用范圍被限定在定義它的最近的一組大括號(hào)內(nèi),超出范圍無(wú)法使用。三、變量作用域【例3-13】局部變量與實(shí)例變量同名。classSameName{
inta=10;publicstaticvoidmain(Stringargs[]){inta=20;System.out.println(“a=”+a);}}三、變量作用域【例3-14】成員變量、局部變量使用示例。classTest{inta=3; intb=5; intc=10; publicvoidsetc(inti){intc=i;//聲明局部變量c,與成員變量c同名 }publicintgetc(){returnc; }}classAccessTest{publicstaticvoidmain(Stringargs[]){
Testobj=newTest();obj.a=10;obj.b=20;obj.setc(100); System.out.println("a,b,andc:"+obj.a+""+obj.b+""+obj.getc());}}四、this關(guān)鍵字添加主題用關(guān)鍵字this訪問隱藏的成員變量基本格式:this.成員名例如:classsameName{inta=10;voidsetA(inta){
this.a=a;}}this代表當(dāng)前對(duì)象,程序中可以通過this關(guān)鍵字訪問被隱藏的成員,還可以用來(lái)調(diào)用構(gòu)造方法。通過this訪問構(gòu)造方法基本格式:this([參數(shù)列表])例如:classCircle{doubleradius;
publicCircle(doubleradius){
this.radius=radius;}publicCircle(){
this(5.0);}doublearea(){returnradius*radius*Math.PI;}}說明:Java要求this()語(yǔ)句必須是構(gòu)造方法的第一個(gè)語(yǔ)句。五、方法重載添加主題classAddition{intadd(inta,intb){ //完成兩個(gè)整數(shù)相加returna+b;}doubleadd(doublea,doubleb){ //完成兩個(gè)實(shí)數(shù)相加returna+b;}intadd(inta,intb,intc){ //完成三個(gè)整數(shù)相加returna+b+c;}}方法重載是指在一個(gè)類中可以有名字相同的多個(gè)方法,但這些方法的參數(shù)必須是不同的,或者是參數(shù)個(gè)數(shù)不同,或者是參數(shù)類型、順序不同。publicclassTestAddition{publicstaticvoidmain(String[]args){Additionadt=newAddition();System.out.println("12+3="+adt.add(12,3));System.out.println("18.35+123="+adt.add(18.35,123));System.out.println("123+25+89="+adt.add(123,25,89));}}六、類及成員的訪問權(quán)限類的訪問權(quán)限修飾符:public類的訪問權(quán)限修飾符只有public,被public修飾的類允許跨包訪問;如果在定義類時(shí)省略了public,則該類只能在本包中使用。
訪問權(quán)限是指類及類成員是否允許其他類訪問??梢酝ㄟ^Java中的訪問權(quán)限修飾符來(lái)改變類或成員的訪問權(quán)限。classCircle{
static
doubleradius;
doublecircumference()
{
return2*3.14159*radius;
}
static
doublearea()
{
return3.14159*radius*radius;
}
}六、類及成員的訪問權(quán)限類成員的訪問權(quán)限有4種public:公共的protected:受保護(hù)的private:私有的無(wú)修飾符:默認(rèn)的關(guān)鍵字public、protected和private則稱為Java的訪問權(quán)限控制修飾符。如果在聲明一個(gè)成員時(shí),沒有用任何訪問權(quán)限控制修飾符進(jìn)行修飾,則稱其為默認(rèn)的訪問權(quán)限。其中:public訪問權(quán)限最為寬松,private(私有)訪問權(quán)限最為嚴(yán)格。
訪問權(quán)限修飾符本類同包其他類不同包子類不同包非子類public可以可以可以可以protected可以可以可以不可以默認(rèn)可以可以不可以不可以private可以不可以不可以不可以六、類及成員的訪問權(quán)限【例3-16】信息隱藏示例。importjava.util.Scanner;
publicclassDemoPer{
publicStringname; //公共屬性:姓名
privateintage; //私有屬性:年齡
publicintgetAge(){ //獲取age屬性值 returnage;
}
publicvoidsetAge(intage){ //設(shè)置age屬性值 if(age<18){ System.out.println("錯(cuò)誤!年齡應(yīng)該大于或等于18歲"); System.exit(0); //退出程序運(yùn)行 } else{ this.age=age; }
}}publicclassTestDemoPre{publicstaticvoidmain(String[]args){DemoPerper=newDemoPer();="王林";Scannerin=newScanner(System.in);System.out.print("請(qǐng)輸入年齡:");intage=in.nextInt();per.setAge(age);System.out.println(+'\t'+per.getAge());}}七、main()方法中的參數(shù)main()方法是Java應(yīng)用程序執(zhí)行的入口,它具有String[]類型的參數(shù)args。一般方法的參數(shù)可以通過方法調(diào)用時(shí)的實(shí)參進(jìn)行傳遞,main()中的參數(shù)是在程序執(zhí)行時(shí)由命令行提供的。當(dāng)在命令行輸入執(zhí)行程序的命令時(shí),緊跟在類名后的信息稱為命令行參數(shù),參數(shù)之間用空格分隔,這些參數(shù)被依次存儲(chǔ)在字符串?dāng)?shù)組args中。七、main()方法中的參數(shù)cla
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國(guó)農(nóng)用鈉燈行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國(guó)調(diào)酒玻璃棒數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)粉末狀觸媒合成塊數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)電動(dòng)隔膜泵數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)滑桿式可調(diào)電阻數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)擺錘式?jīng)_擊實(shí)驗(yàn)機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)干肉架數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)咸水椒數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)普通雜木炭市場(chǎng)調(diào)查研究報(bào)告
- 第六單元寫作《表達(dá)要得體》教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)
- 臭和味檢測(cè)原始記錄表
- 變壓器檢修風(fēng)險(xiǎn)分析及管控措施
- 勞務(wù)派遣公司介紹ppt課件(PPT 35頁(yè))
- 紀(jì)檢監(jiān)察機(jī)關(guān)派駐機(jī)構(gòu)工作規(guī)則PPT
- 最全麥當(dāng)勞員工手冊(cè)
- 潔凈室管理培訓(xùn)
- 護(hù)士長(zhǎng)績(jī)效考核評(píng)分細(xì)則表
- 加班調(diào)休單(最新版)
- 習(xí)慣性違章的特點(diǎn)危害及預(yù)防對(duì)策
- 智慧金字塔立體篇第四冊(cè)、第五冊(cè)答案全解
- ihaps用戶手冊(cè)
評(píng)論
0/150
提交評(píng)論