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

下載本文檔

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

文檔簡介

§3-2學(xué)生成績處理Java面向?qū)ο蟪绦蛟O(shè)計教學(xué)目標任務(wù)分析

在學(xué)生信息處理中不僅需要處理學(xué)生對象包括的學(xué)號、姓名等這些基本信息,還要包括學(xué)生的選課情況,記錄每門課程的成績,并對學(xué)生個人或班級成績進行一些統(tǒng)計分析方面的處理。要完成這些功能就涉及到類中方法的定義、調(diào)用等基本知識。教學(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);

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

doubleradius;

doublecircumference()

{

return2*3.14159*radius;

}

}return語句的基本格式為:

return[表達式];一、方法定義及調(diào)用方法首部需要聲明的內(nèi)容1)修飾符。用來對定義的方法作某些限定,這些修飾符可以分為訪問權(quán)限控制符和非訪問權(quán)限控制符兩種。如public等。2)返回值類型。返回值類型指定了方法被執(zhí)行后需要返回的數(shù)據(jù)類型,可以是任何合法有效的類型,包括用戶創(chuàng)建的類的類型。如果該方法不返回任何值,則它的返回值類型必須為void。3)方法名。方法名由用戶指定,可以是任何合法的標識符,并盡量做到見名知義。4)形式參數(shù)列表。形式參數(shù)列表是一個或多個形參類型的聲明,多個形參時用逗號分隔。形參用于接收方法被調(diào)用時傳遞給方法的參數(shù)值。如果方法被調(diào)用不需要傳遞參數(shù),那么參數(shù)表為空。所以,一個方法可以有多個形式參數(shù),也可以沒有。形參列表中應(yīng)該對每一個形式參數(shù)進行獨立的數(shù)據(jù)類型說明。如:max(intnum1,intnum2)而不能說明為max(intnum1,num2)。一、方法定義及調(diào)用方法體方法體是方法定義的核心,是對方法功能的實現(xiàn)。其中它包括變量的聲明以及一組定義方法功能的語句集合。有返回值的方法必須使用關(guān)鍵字return返回方法的值,而返回值類型為void的方法則可以沒有return語句。return語句的基本格式為:

return[表達式];如:Circle類中定義一個計算周長的方法。

classCircle{

doubleradius;

doublecircumference(){

return2*3.14159*radius;

}

}一、方法定義及調(diào)用【例3-6】定義一個方法,求三個整數(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對象

Scannerin=newScanner(System.in);intm;System.out.print("請輸入3個數(shù):");inta=in.nextInt();intb=in.nextInt();intc=in.nextInt();m=max.maxFrom3(a,b,c);//調(diào)用類方法maxFrom3(),a、b、c為實參System.out.println("Max="+m);}}一、方法定義及調(diào)用方法調(diào)用的一般格式為:

對象名.方法名([實參列表]);如:st.showInf();

classCircle{

doubleradius;

voidsetR(doubler){

radius=r;}

doublecircumference(){

return2*3.14159*radius;

}

}一個方法只有被調(diào)用后,其程序代碼才能被執(zhí)行publicclassCircleTest{

publicstaticvoidmain(String[]args){ Circlec1=newCircle();

c1.setR(5.5); System.out.println("半徑為:"+c1.radius+"圓的周長為:"+c1.circumference());

}}一、方法定義及調(diào)用【例3-7】利用已定義的類Box,分別計算長、寬、高分別為10、20、15和3、6、9的長方體的體積。classBox{ //定義Box類

doublelenth;

doublewidth; //定義成員變量

doubleheight;//定義設(shè)置長方體長、寬、高的方法

voidsetlwh(doublelsetlwh,doublew,doubleh){

lenth=l;

width=w;

height=h;

}

doublevolume(){//定義計算長方體體積的方法

returnlenth*width*height;

}}

classBoxDemo3{

publicstaticvoidmain(Stringargs[]){

Boxmybox1=newBox();

Boxmybox2=newBox();

doublevol;

mybox1.setlwh(10,20,15);//無返回值的調(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)用過程當程序調(diào)用方法時,程序執(zhí)行流程將跳轉(zhuǎn)到被調(diào)用的方法中,直到執(zhí)行return語句或遇到方法結(jié)束標志,同時程序執(zhí)行流程轉(zhuǎn)到該方法的被調(diào)處,繼續(xù)后續(xù)程序的執(zhí)行。參數(shù)傳遞方法Java中參數(shù)的傳遞方式有兩種:值傳遞和引用傳遞。當參數(shù)的類型為基本數(shù)據(jù)類型時采用值傳遞,當參數(shù)類型為對象類型或數(shù)組時,采用引用傳遞方式。值傳遞:實參的值傳遞給形參變量。引用傳遞:將實參對象的引用傳遞給形參。一、方法定義及調(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兩個形參變量的值

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】以對象作為參數(shù)的方法調(diào)用。classCircle{

doubleradius=1.0;

doublefindArea(){

returnradius*radius*3.14159;

}}

publicclassTestPassingObject{

publicstaticvoidmain(String[]args){CirclemyCircle=newCircle();intn=5;printAreas(myCircle,n);//對象myCircle作為實參System.out.println("\n"+"半徑是:"+myCircle.radius);System.out.println("n的值為:"+n);

}

publicstaticvoidprintAreas(Circlec,inttimes){//c為對象類型的形參

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修飾的成員稱為實例成員(或?qū)ο蟪蓡T),包括實例變量或?qū)嵗椒?。實例成員引用方法:對象名.成員類成員引用可通過兩種方法:類名.成員或?qū)ο竺?成員

類中表示屬性的變量和表示行為的方法均稱為類的成員。這些成員又分為實例成員(或稱對象成員)和靜態(tài)成員(或稱類成員)。classCircle{

static

doubleradius;

doublecircumference()

{

return2*3.14159*radius;

}

static

doublearea()

{

return3.14159*radius*radius;

}

}二、成員類別類(靜態(tài))成員具備以下特點

1)靜態(tài)成員是屬于類的,隨著類的加載而加載,并完成了初始化。

2)被所有對象共享。3)可以直接被類名調(diào)用。類(靜態(tài))成員使用上需要注意以下幾點1)靜態(tài)方法中只能訪問靜態(tài)成員(包括主方法中)2)靜態(tài)方法中不可以使用this,super關(guān)鍵字類中表示屬性的變量和表示行為的方法均稱為類的成員。這些成員根據(jù)其使用上的差別又分為實例成員(或稱對象成員)和靜態(tài)成員(或稱類成員)。classCircle{

static

doubleradius;

doublecircumference()

{

return2*3.14159*radius;

}

static

doublearea()

{

return3.14159*radius*radius;

}

}二、成員類別【例3-10】類變量與實例變量使用比較。classTest{

staticinti;//定義i為類變量intj;//定義j為實例變量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】利用類變量計算長方體的體積。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

}}三、變量作用域全局變量定義在方法之外的變量為全局變量,它的作用域是整個類。如: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);

}

變量的使用范圍被限定在定義它的最近的一組大括號內(nèi),超出范圍無法使用。三、變量作用域【例3-13】局部變量與實例變量同名。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代表當前對象,程序中可以通過this關(guān)鍵字訪問被隱藏的成員,還可以用來調(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()語句必須是構(gòu)造方法的第一個語句。五、方法重載添加主題classAddition{intadd(inta,intb){ //完成兩個整數(shù)相加returna+b;}doubleadd(doublea,doubleb){ //完成兩個實數(shù)相加returna+b;}intadd(inta,intb,intc){ //完成三個整數(shù)相加returna+b+c;}}方法重載是指在一個類中可以有名字相同的多個方法,但這些方法的參數(shù)必須是不同的,或者是參數(shù)個數(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修飾的類允許跨包訪問;如果在定義類時省略了public,則該類只能在本包中使用。

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

static

doubleradius;

doublecircumference()

{

return2*3.14159*radius;

}

static

doublearea()

{

return3.14159*radius*radius;

}

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

訪問權(quán)限修飾符本類同包其他類不同包子類不同包非子類public可以可以可以可以protected可以可以可以不可以默認可以可以不可以不可以private可以不可以不可以不可以六、類及成員的訪問權(quán)限【例3-16】信息隱藏示例。importjava.util.Scanner;

publicclassDemoPer{

publicStringname; //公共屬性:姓名

privateintage; //私有屬性:年齡

publicintgetAge(){ //獲取age屬性值 returnage;

}

publicvoidsetAge(intage){ //設(shè)置age屬性值 if(age<18){ System.out.println("錯誤!年齡應(yīng)該大于或等于18歲"); System.exit(0); //退出程序運行 } else{ this.age=age; }

}}publicclassTestDemoPre{publicstaticvoidmain(String[]args){DemoPerper=newDemoPer();="王林";Scannerin=newScanner(System.in);System.out.print("請輸入年齡:");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)用時的實參進行傳遞,main()中的參數(shù)是在程序執(zhí)行時由命令行提供的。當在命令行輸入執(zhí)行程序的命令時,緊跟在類名后的信息稱為命令行參數(shù),參數(shù)之間用空格分隔,這些參數(shù)被依次存儲在字符串數(shù)組args中。七、main()方法中的參數(shù)cla

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論