java方法可以理解為是語(yǔ)句的集合,它們?cè)谝黄饒?zhí)行一個(gè)功能。假設(shè)有一個(gè)游戲程序,程序在運(yùn)行過(guò)程中,要不斷地發(fā)射炮彈。發(fā)射炮彈的動(dòng)作需要編寫(xiě)100行的代碼,在每次實(shí)現(xiàn)發(fā)射炮彈的地方都需要重復(fù)地編寫(xiě)這100行代碼,這樣程序會(huì)變得很臃腫,可讀性也非常差。為了解決代碼重復(fù)編寫(xiě)的問(wèn)題,可以將發(fā)射炮彈的代碼提取出來(lái)放在一個(gè){}中,并為這段代碼起個(gè)名字,這樣在每次發(fā)射炮彈的地方通過(guò)這個(gè)名字來(lái)調(diào)用發(fā)射炮彈的代碼就可以了。上述過(guò)程中,所提取出來(lái)的代碼可以被看作是程序中定義的一個(gè)方法,程序在需要發(fā)射炮彈時(shí)調(diào)用該方法即可m接下來(lái)通過(guò)一些案例來(lái)介紹方法在程序中起到的作用,先來(lái)看一下在不使用方法時(shí)如何實(shí)現(xiàn)打印三個(gè)長(zhǎng)寬不同的矩形。
public class example1 {
public static void main(String[] args) {
//使用的循環(huán)是使用*打印一個(gè)寬為5、高為3的矩形
for (int i=0; i<3 ;i++ ) {
for (int j=0;j<5 ;j++) {
System.out.print("*");
}
System.out.print("\n");
}
System.out.print("\n");
//使用的循環(huán)是使用*打印一個(gè)寬為4、高為2的矩形
for (int i=0; i<2 ;i++ ) {
for (int j=0;j<4 ;j++) {
System.out.print("*");
}
System.out.print("\n");
}
System.out.print("\n");
//使用的循環(huán)是使用*打印一個(gè)寬為10、高為6的矩形
for (int i=0; i<6 ;i++ ) {
for (int j=0;j<10 ;j++) {
System.out.print("*");
}
System.out.print("\n");
}
System.out.print("\n");
}
}
運(yùn)行結(jié)果
example1.java運(yùn)行結(jié)果
在上面案例中,分別使用三個(gè)嵌套for循環(huán)完成了三個(gè)矩形的打印,仔細(xì)觀察會(huì)發(fā)現(xiàn),這三個(gè)嵌套for循環(huán)的代碼是重復(fù)的,都在做一樣的事情。此時(shí),就可以將使用“*”打印矩形的功能定義為方法,在程序中調(diào)用三次即可,例如:example2.java。
public classe example2 {
public static void main(String[] args) {
printRectangle(3, 5);
printRectangle(2, 4);
printRectangle(6, 10);
}
public static void printRectangle(int height, int width) {
//下面使用嵌套for循環(huán)實(shí)現(xiàn)*打印
for (int i=0; i<height ;i++ ) {
for (int j=0;j<width;j++) {
System.out.print("*");
}
System.out.print("\n");
}
System.out.print("\n");
}
}
運(yùn)行結(jié)果與example1.java運(yùn)行結(jié)果相同。
在example2.java中定義了一個(gè)方法。其中{}內(nèi)實(shí)現(xiàn)打印矩形的代碼是方法體, printRectangle()是方法名, ()中的height和 width是方法的參數(shù),方法名前面的void是方法的返回值類型。
在Java中,聲明一個(gè)方法的具體語(yǔ)法格式如下:
修飾符 返回值類型 方法名 ([參數(shù)類型 參數(shù)名 1,參數(shù)類型 參數(shù)名 2,…]){
執(zhí)行語(yǔ)句
…
return 返回值;
}
對(duì)于上面的語(yǔ)法格式具體說(shuō)明如下。
修飾符:方法的修飾符比較多,有對(duì)訪問(wèn)權(quán)限進(jìn)行限定的,有靜態(tài)修飾符static,還有最終修飾符final等,這些修飾符在后面的學(xué)習(xí)過(guò)程中會(huì)逐步介紹。
返回值類型:用于限定方法返回值的數(shù)據(jù)類型。
參數(shù)類型:用于限定調(diào)用方法時(shí)傳入?yún)?shù)的數(shù)據(jù)類型。
參數(shù)名:是一個(gè)變量,用于接收調(diào)用方法時(shí)傳入的數(shù)據(jù)。
return關(guān)鍵字:用于結(jié)束方法以及返回方法指定類型的值。
返回值:被return語(yǔ)句返回的值,該值會(huì)返回給調(diào)用者。需要特別注意的是,方法中的“參數(shù)類型參數(shù)名1,參數(shù)類型參數(shù)名2”被稱作參數(shù)列表,它用于描述方法在被調(diào)用時(shí)需要接收的參數(shù),如果方法不需要接收任何參數(shù),則參數(shù)列表為空,即()內(nèi)不寫(xiě)任何內(nèi)容。方法的返回值必須為方法聲明的返回值類型,如果方法中沒(méi)有返回值,返回值類型要聲明為void,此時(shí),方法中return語(yǔ)句可以省略。
由于example2.java中 printRectangle()方法沒(méi)有返回值,接下來(lái)通過(guò)一個(gè)案例來(lái)法中有返回值的情況,例Example3.java
public classe example3 {
public static void main(String[] args) {
int area=getArea(3,5); //調(diào)用getArea方法
System.out.print("The area is"+area);
}
//下面定義了一個(gè)球矩形面積的方法,接收兩個(gè)參數(shù),其中x為高,y為寬
public static int getArea(int x,int y) {
int temp=x*y; //使用變量temp記住運(yùn)算結(jié)果
return temp; //將變量temp的值返回
}
}
運(yùn)行結(jié)果為:
The area is 15
example3.java中,定義了一個(gè)getArea()方法用于求矩形的面積,參數(shù)x和y分別用于接收調(diào)用方法時(shí)傳入的高和寬,return語(yǔ)句用于返回計(jì)算所得的面積。在main(方法中通過(guò)調(diào)用getArea()方法,獲得矩形的面積,并將結(jié)果打印。
在程序運(yùn)行期間,參數(shù)x和y相當(dāng)于在內(nèi)存中定義的兩個(gè)變量當(dāng)調(diào)用getArea()方法時(shí),傳入的參數(shù)3和5分別賦值給變量x和y,并將x*y的結(jié)果通過(guò)return語(yǔ)句返回,整個(gè)方法的調(diào)用過(guò)程結(jié)束,變量x和y被釋放。
推薦了解熱門(mén)學(xué)科