Java程序設(shè)計(jì)項(xiàng)目式教程 課件3-2 學(xué)生成績(jī)處理_第1頁(yè)
Java程序設(shè)計(jì)項(xiàng)目式教程 課件3-2 學(xué)生成績(jī)處理_第2頁(yè)
Java程序設(shè)計(jì)項(xiàng)目式教程 課件3-2 學(xué)生成績(jī)處理_第3頁(yè)
Java程序設(shè)計(jì)項(xiàng)目式教程 課件3-2 學(xué)生成績(jī)處理_第4頁(yè)
Java程序設(shè)計(jì)項(xiàng)目式教程 課件3-2 學(xué)生成績(jī)處理_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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é)生的選課情況,記錄每門(mén)課程的成績(jī),并對(duì)學(xué)生個(gè)人或班級(jí)成績(jī)進(jìn)行一些統(tǒng)計(jì)分析方面的處理。要完成這些功能就涉及到類中方法的定義、調(diào)用等基本知識(shí)。教學(xué)內(nèi)容1成員類別方法的定義及調(diào)用23this關(guān)鍵字變量作用域45類及成員的訪問(wèn)權(quán)限main()方法中的參數(shù)6一、方法定義及調(diào)用方法定義的一般格式:

[方法修飾符]返回值類型方法名([形式參數(shù)列表]){

方法體

}方法定義包括:方法聲明(方法首部)和方法體兩部分。如:

publicvoidshowInf(){//定義方法

System.out.println(sid+"\t"+sname+"\t"+sage);

}類中的成員分為兩類:表示屬性的變量成員和表示行為的方法成員。在一個(gè)類中方法成員可以沒(méi)有,也可以有多個(gè),它非常類似與其他高級(jí)語(yǔ)言的函數(shù)或過(guò)程,方法就是一段用來(lái)完成某項(xiàng)任務(wù)的程序代碼。classCircle{

doubleradius;

doublecircumference()

{

return2*3.14159*radius;

}

}return語(yǔ)句的基本格式為:

return[表達(dá)式];一、方法定義及調(diào)用方法首部需要聲明的內(nèi)容1)修飾符。用來(lái)對(duì)定義的方法作某些限定,這些修飾符可以分為訪問(wèn)權(quán)限控制符和非訪問(wèn)權(quán)限控制符兩種。如public等。2)返回值類型。返回值類型指定了方法被執(zhí)行后需要返回的數(shù)據(jù)類型,可以是任何合法有效的類型,包括用戶創(chuàng)建的類的類型。如果該方法不返回任何值,則它的返回值類型必須為void。3)方法名。方法名由用戶指定,可以是任何合法的標(biāo)識(shí)符,并盡量做到見(jiàn)名知義。4)形式參數(shù)列表。形式參數(shù)列表是一個(gè)或多個(gè)形參類型的聲明,多個(gè)形參時(shí)用逗號(hào)分隔。形參用于接收方法被調(diào)用時(shí)傳遞給方法的參數(shù)值。如果方法被調(diào)用不需要傳遞參數(shù),那么參數(shù)表為空。所以,一個(gè)方法可以有多個(gè)形式參數(shù),也可以沒(méi)有。形參列表中應(yīng)該對(duì)每一個(gè)形式參數(shù)進(jìn)行獨(dú)立的數(shù)據(jù)類型說(shuō)明。如:max(intnum1,intnum2)而不能說(shuō)明為max(intnum1,num2)。一、方法定義及調(diào)用方法體方法體是方法定義的核心,是對(duì)方法功能的實(shí)現(xiàn)。其中它包括變量的聲明以及一組定義方法功能的語(yǔ)句集合。有返回值的方法必須使用關(guān)鍵字return返回方法的值,而返回值類型為void的方法則可以沒(méi)有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)用過(guò)程當(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ì)象名.成員類成員引用可通過(guò)兩種方法:類名.成員或?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)方法中只能訪問(wèn)靜態(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;//訪問(wèn)類變量height System.out.println("mybox1的體積是:"+vol); vol=mybox2.lenth*mybox2.width*Box4.height;//訪問(wèn)類變量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);//訪問(wèn)類變量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訪問(wèn)隱藏的成員變量基本格式:this.成員名例如:classsameName{inta=10;voidsetA(inta){

this.a=a;}}this代表當(dāng)前對(duì)象,程序中可以通過(guò)this關(guān)鍵字訪問(wèn)被隱藏的成員,還可以用來(lái)調(diào)用構(gòu)造方法。通過(guò)this訪問(wèn)構(gòu)造方法基本格式:this([參數(shù)列表])例如:classCircle{doubleradius;

publicCircle(doubleradius){

this.radius=radius;}publicCircle(){

this(5.0);}doublearea(){returnradius*radius*Math.PI;}}說(shuō)明: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));}}六、類及成員的訪問(wèn)權(quán)限類的訪問(wèn)權(quán)限修飾符:public類的訪問(wèn)權(quán)限修飾符只有public,被public修飾的類允許跨包訪問(wèn);如果在定義類時(shí)省略了public,則該類只能在本包中使用。

訪問(wèn)權(quán)限是指類及類成員是否允許其他類訪問(wèn)??梢酝ㄟ^(guò)Java中的訪問(wèn)權(quán)限修飾符來(lái)改變類或成員的訪問(wèn)權(quán)限。classCircle{

static

doubleradius;

doublecircumference()

{

return2*3.14159*radius;

}

static

doublearea()

{

return3.14159*radius*radius;

}

}六、類及成員的訪問(wèn)權(quán)限類成員的訪問(wèn)權(quán)限有4種public:公共的protected:受保護(hù)的private:私有的無(wú)修飾符:默認(rèn)的關(guān)鍵字public、protected和private則稱為Java的訪問(wèn)權(quán)限控制修飾符。如果在聲明一個(gè)成員時(shí),沒(méi)有用任何訪問(wèn)權(quán)限控制修飾符進(jìn)行修飾,則稱其為默認(rèn)的訪問(wèn)權(quán)限。其中:public訪問(wèn)權(quán)限最為寬松,private(私有)訪問(wèn)權(quán)限最為嚴(yán)格。

訪問(wèn)權(quán)限修飾符本類同包其他類不同包子類不同包非子類public可以可以可以可以protected可以可以可以不可以默認(rèn)可以可以不可以不可以private可以不可以不可以不可以六、類及成員的訪問(wèn)權(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ù)可以通過(guò)方法調(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ú)特殊說(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論