Java基础 五 方法
?
?
方法
1.1????? 方法概述
? ? ?在我們的日常生活中,方法可以理解為要做某件事情,而采取的解決辦法。
如:小明同學(xué)在路邊準(zhǔn)備坐車(chē)來(lái)學(xué)校學(xué)習(xí)。這就面臨著一件事情(坐車(chē)到學(xué)校這件事情)需要解決,解決辦法呢?可采用坐公交車(chē)或坐出租車(chē)的方式來(lái)學(xué)校,那么,這種解決某件事情的辦法,我們就稱(chēng)為方法。
在java中,方法就是用來(lái)完成解決某件事情或?qū)崿F(xiàn)某個(gè)功能的辦法。
方法實(shí)現(xiàn)的過(guò)程中,會(huì)包含很多條語(yǔ)句用于完成某些有意義的功能——通常是處理文本,控制輸入或計(jì)算數(shù)值。
我們可以通過(guò)在程序代碼中引用方法名稱(chēng)和所需的參數(shù),實(shí)現(xiàn)在該程序中執(zhí)行(或稱(chēng)調(diào)用)該方法。方法,一般都有一個(gè)返回值,用來(lái)作為事情的處理結(jié)果。
1.2? ? ?方法的語(yǔ)法格式
在Java中,聲明一個(gè)方法的具體語(yǔ)法格式如下:
修飾符 返回值類(lèi)型 方法名(參數(shù)類(lèi)型 參數(shù)名1,參數(shù)類(lèi)型 參數(shù)名2,......){
??? 執(zhí)行語(yǔ)句
??? ………
??? return 返回值;
}
對(duì)于上面的語(yǔ)法格式中具體說(shuō)明如下:
?修飾符:方法的修飾符比較多,有對(duì)訪問(wèn)權(quán)限進(jìn)行限定的,有靜態(tài)修飾符static,還有最終修飾符final等,這些修飾符在后面的學(xué)習(xí)過(guò)程中會(huì)逐步介紹
? 返回值類(lèi)型:用于限定方法返回值的數(shù)據(jù)類(lèi)型
? 參數(shù)類(lèi)型:用于限定調(diào)用方法時(shí)傳入?yún)?shù)的數(shù)據(jù)類(lèi)型
? 參數(shù)名:是一個(gè)變量,用于接收調(diào)用方法時(shí)傳入的數(shù)據(jù)
? return關(guān)鍵字:用于結(jié)束方法以及返回方法指定類(lèi)型的值
? 返回值:被return語(yǔ)句返回的值,該值會(huì)返回給調(diào)用者
需要特別注意的是,方法中的“參數(shù)類(lèi)型 參數(shù)名1,參數(shù)類(lèi)型 參數(shù)名2”被稱(chēng)作參數(shù)列表,它用于描述方法在被調(diào)用時(shí)需要接收的參數(shù),如果方法不需要接收任何參數(shù),則參數(shù)列表為空,即()內(nèi)不寫(xiě)任何內(nèi)容。方法的返回值必須為方法聲明的返回值類(lèi)型,如果方法中沒(méi)有返回值,返回值類(lèi)型要聲明為void,此時(shí),方法中return語(yǔ)句可以省略。
?????? 接下來(lái)通過(guò)一個(gè)案例來(lái)演示方法的定義與使用,如下圖所示。MethodDemo01.java
public class MethodDemo01 {public static void main(String[] args) {int area = getArea(3, 5); // 調(diào)用 getArea方法System.out.println(" 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é)果如下圖所示。
在上述代碼中,定義了一個(gè)getArea()方法用于求矩形的面積,參數(shù)x和y分別用于接收調(diào)用方法時(shí)傳入的高和寬,return語(yǔ)句用于返回計(jì)算所得的面積。在main()方法中通過(guò)調(diào)用getArea()方法,獲得矩形的面積,并將結(jié)果打印。
1.3? ? ? 方法調(diào)用圖解
接下來(lái)通過(guò)一個(gè)圖例演示getArea()方法的整個(gè)調(diào)用過(guò)程,如下圖所示。
從上圖中可以看出,在程序運(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被釋放。
1.4? ? ? 方法定義練習(xí)
分別定義如下方法:
???????? 定義無(wú)返回值無(wú)參數(shù)方法,如打印3行,每行3個(gè)*號(hào)的矩形
???????? 定義有返回值無(wú)參數(shù)方法,如鍵盤(pán)錄入得到一個(gè)整數(shù)
???????? 定義無(wú)返回值有參數(shù)方法,如打印指定M行,每行N個(gè)*號(hào)的矩形
???????? 定義有返回值有參數(shù)方法,如求三個(gè)數(shù)的平均值
?
? 無(wú)返回值無(wú)參數(shù)方法,如打印3行,每行3個(gè)*號(hào)的矩形
?
public static void printRect(){//打印3行星for (int i=0; i<3; i++) {//System.out.println("***"); 相當(dāng)于是打印3顆星,換行//每行打印3顆星for (int j=0; j<3; j++) {System.out.print("*"); // *** }System.out.println();}}? 有返回值無(wú)參數(shù)方法,如鍵盤(pán)錄入得到一個(gè)整數(shù)
public static int getNumber(){Scanner sc = new Scanner(System.in);int number = sc.nextInt();return number;}? 無(wú)返回值有參數(shù)方法,如打印指定M行,每行N個(gè)*號(hào)的矩形
public static void printRect2(int m, int n){//打印M行星for (int i=0; i<m; i++) {//每行中打印N顆星for (int j=0; j<n; j++) {System.out.print("*"); }System.out.println();}}?有返回值有參數(shù)方法,如求三個(gè)數(shù)的平均值
public static double getAvg(double a, double b, double c) {double result = (a+b+c)/3;return result;}1.5? ? ? 方法的重載
我們假設(shè)要在程序中實(shí)現(xiàn)一個(gè)對(duì)數(shù)字求和的方法,由于參與求和數(shù)字的個(gè)數(shù)和類(lèi)型都不確定,因此要針對(duì)不同的情況去設(shè)計(jì)不同的方法。接下來(lái)通過(guò)一個(gè)案例來(lái)實(shí)現(xiàn)對(duì)兩個(gè)整數(shù)相加、對(duì)三個(gè)整數(shù)相加以及對(duì)兩個(gè)小數(shù)相加的功能,具體實(shí)現(xiàn)如下所示。MethodDemo02.java
public class MethodDemo02 {public static void main(String[] args) {// 下面是針對(duì)求和方法的調(diào)用int sum1 = add01(1, 2);int sum2 = add02(1, 2, 3);double sum3 = add03(1.2, 2.3);// 下面的代碼是打印求和的結(jié)果System.out.println("sum1=" + sum1);System.out.println("sum2=" + sum2);System.out.println("sum3=" + sum3);}// 下面的方法實(shí)現(xiàn)了兩個(gè)整數(shù)相加public static int add01(int x, int y) {return x + y;}// 下面的方法實(shí)現(xiàn)了三個(gè)整數(shù)相加public static int add02(int x, int y, int z) {return x + y + z;}// 下面的方法實(shí)現(xiàn)了兩個(gè)小數(shù)相加public static double add03(double x, double y) {return x + y;} }運(yùn)行結(jié)果如下圖所示。
從上述代碼不難看出,程序需要針對(duì)每一種求和的情況都定義一個(gè)方法,如果每個(gè)方法的名稱(chēng)都不相同,在調(diào)用時(shí)就很難分清哪種情況該調(diào)用哪個(gè)方法。
為了解決這個(gè)問(wèn)題,Java允許在一個(gè)類(lèi)中定義多個(gè)名稱(chēng)相同的方法,但是參數(shù)的類(lèi)型或個(gè)數(shù)必須不同,這就是方法的重載。
下面的三個(gè)方法互為重載關(guān)系
public static int add(int x,int y) {邏輯} //兩個(gè)整數(shù)加法public static int add(int x,int y,int z) {邏輯} //三個(gè)整數(shù)加法public static int add(double x,double y) {邏輯} //兩個(gè)小數(shù)加法接下來(lái)通過(guò)方法重載的方式進(jìn)行修改,如下所示。MethodDemo03.java
public class MethodDemo03 {public static void main(String[] args) {// 下面是針對(duì)求和方法的調(diào)用int sum1 = add(1, 2);int sum2 = add(1, 2, 3);double sum3 = add(1.2, 2.3);// 下面的代碼是打印求和的結(jié)果System.out.println("sum1=" + sum1);System.out.println("sum2=" + sum2);System.out.println("sum3=" + sum3);}// 下面的方法實(shí)現(xiàn)了兩個(gè)整數(shù)相加public static int add(int x, int y) {return x + y;}// 下面的方法實(shí)現(xiàn)了三個(gè)整數(shù)相加public static int add(int x, int y, int z) {return x + y + z;}// 下面的方法實(shí)現(xiàn)了兩個(gè)小數(shù)相加public static double add(double x, double y) {return x + y;} }MethodDemo02.java的運(yùn)行結(jié)果和MethodDemo03.java一樣,如下圖所示。
上述代碼中定義了三個(gè)同名的add()方法,它們的參數(shù)個(gè)數(shù)或類(lèi)型不同,從而形成了方法的重載。
在main()方法中調(diào)用add()方法時(shí),通過(guò)傳入不同的參數(shù)便可以確定調(diào)用哪個(gè)重載的方法,如add(1,2)調(diào)用的是兩個(gè)整數(shù)求和的方法。值得注意的是,方法的重載與返回值類(lèi)型無(wú)關(guān),它只有兩個(gè)條件,一是方法名相同,二是參數(shù)個(gè)數(shù)或參數(shù)類(lèi)型不相同。
1.5.1? ? 重載的注意事項(xiàng)
重載方法參數(shù)必須不同: 參數(shù)個(gè)數(shù)不同,如method(int x)與method(int x,int y)不同 參數(shù)類(lèi)型不同,如method(int x)與method(double x)不同g 參數(shù)順序不同,如method(int x,double y)與method(double x,int y)不同重載只與方法名與參數(shù)類(lèi)型相關(guān)與返回值無(wú)關(guān) 如void method(int x)與int method(int y)不是方法重載,不能同時(shí)存在重載與具體的變量標(biāo)識(shí)符無(wú)關(guān) 如method(int x)與method(int y)不是方法重載,不能同時(shí)存在1.5.2? ? 參數(shù)傳遞
?
參數(shù)傳遞,可以理解當(dāng)我們要調(diào)用一個(gè)方法時(shí),我們會(huì)把指定的數(shù)值,傳遞給方法中的參數(shù),這樣方法中的參數(shù)就擁有了這個(gè)指定的值,可以使用該值,在方法中運(yùn)算了。這種傳遞方式,我們稱(chēng)為參數(shù)傳遞。
?在這里,定義方法時(shí),參數(shù)列表中的變量,我們稱(chēng)為形式參數(shù)
? 調(diào)用方法時(shí),傳入給方法的數(shù)值,我們稱(chēng)為實(shí)際參數(shù)
我們看下面的兩段代碼,來(lái)明確下參數(shù)傳遞的過(guò)程:
?
public class ArgumentsDemo01 {public static void main(String[] args) {int a=5;int b=10;change(a, b);//調(diào)用方法時(shí),傳入的數(shù)值稱(chēng)為實(shí)際參數(shù)System.out.println("a=" + a);System.out.println("b=" + b);}public static void change(int a, int b){//方法中指定的多個(gè)參數(shù)稱(chēng)為形式參數(shù)a=200;b=500;} }?
? ? ? ? ?程序的運(yùn)行結(jié)果如下:
再看另一段代碼
public class ArgumentsDemo02 {public static void main(String[] args) {int[] arr = { 1, 2, 3 };change(arr);// 調(diào)用方法時(shí),傳入的數(shù)值稱(chēng)為實(shí)際參數(shù)for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}public static void change(int[] arr) {// 方法中指定的多個(gè)參數(shù)稱(chēng)為形式參數(shù)for (int i = 0; i < arr.length; i++) {arr[i] *= 2;}} }?
程序的運(yùn)行結(jié)果如下:
1.5.3? ?參數(shù)傳遞圖解與結(jié)論
通過(guò)上面的兩段程序可以得出如下結(jié)論:
? 當(dāng)調(diào)用方法時(shí),如果傳入的數(shù)值為基本數(shù)據(jù)類(lèi)型(包含String類(lèi)型),形式參數(shù)的改變對(duì)實(shí)際參數(shù)不影響
?當(dāng)調(diào)用方法時(shí),如果傳入的數(shù)值為引用數(shù)據(jù)類(lèi)型(String類(lèi)型除外),形式參數(shù)的改變對(duì)實(shí)際參數(shù)有影響
? ?隨機(jī)點(diǎn)名器案例
2.1????? 案例介紹
隨機(jī)點(diǎn)名器,即在全班同學(xué)中隨機(jī)的打印出一名同學(xué)名字。
要做的隨機(jī)點(diǎn)名器,它具備以下3個(gè)內(nèi)容:
? 存儲(chǔ)所有同學(xué)姓名
? 總覽全班同學(xué)姓名
? 隨機(jī)點(diǎn)名其中一人,打印到控制臺(tái)
2.2????? 案例需求分析
在全班同學(xué)中隨機(jī)的打印出一名同學(xué)名字。
我們對(duì)本案例進(jìn)行分析,得出如下分析結(jié)果:
1.存儲(chǔ)全班同學(xué)名字
2.打印全班同學(xué)每一個(gè)人的名字
3.在班級(jí)總?cè)藬?shù)范圍內(nèi),隨機(jī)產(chǎn)生一個(gè)隨機(jī)數(shù),查找該隨機(jī)數(shù)所對(duì)應(yīng)的同學(xué)名字
該案例須有以下3個(gè)內(nèi)容:
? 存儲(chǔ)所有同學(xué)姓名
? 總覽全班同學(xué)姓名
隨機(jī)點(diǎn)名其中一人,打印到控`制臺(tái)
隨機(jī)點(diǎn)名器明確地分為了三個(gè)功能。如果將多個(gè)獨(dú)立功能的代碼寫(xiě)到一起,則代碼相對(duì)冗長(zhǎng),我們可以針對(duì)不同的功能可以將其封裝到一個(gè)方法中,將完整獨(dú)立的功能分離出來(lái)。
而在存儲(chǔ)同學(xué)姓名時(shí),如果對(duì)每一個(gè)同學(xué)都定義一個(gè)變量進(jìn)行姓名存儲(chǔ),則會(huì)出現(xiàn)過(guò)多孤立的變量,很難一次性將全部數(shù)據(jù)持有。此時(shí),我們可以使用數(shù)組解決多個(gè)數(shù)據(jù)的存儲(chǔ)問(wèn)題。
2.3????? 實(shí)現(xiàn)代碼步驟
編寫(xiě)CallName.java文件,完成程序的編寫(xiě)。
?main方法中調(diào)用三個(gè)獨(dú)立方法
public static void main(String[] args) {System.out.println("--------隨機(jī)點(diǎn)名器--------");// 創(chuàng)建一個(gè)存儲(chǔ)多個(gè)同學(xué)名字的容器(數(shù)組)String[] students = new String[3];/** 1.存儲(chǔ)全班同學(xué)名字*/addStudentName(students);/** 2.打印全班同學(xué)每一個(gè)人的名字*/printStudentName(students);/** 3.獲取隨機(jī)點(diǎn)名到的學(xué)生姓名,并打印*/String randomName = randomStudentName(students);System.out.println("被點(diǎn)到名的同學(xué)是 :" + randomName);}?1.存儲(chǔ)所有同學(xué)姓名
/*** 1.存儲(chǔ)全班同學(xué)名字* 創(chuàng)建一個(gè)存儲(chǔ)多個(gè)同學(xué)名字的容器(數(shù)組) * 鍵盤(pán)輸入每個(gè)同學(xué)的名字,存儲(chǔ)到容器中(數(shù)組)*/public static void addStudentName(String[] students) {//鍵盤(pán)輸入多個(gè)同學(xué)名字存儲(chǔ)到容器中Scanner sc = new Scanner(System.in);for (int i = 0; i < students.length; i++) {System.out.println("存儲(chǔ)第"+i+"個(gè)名稱(chēng):");students[i] = sc.next();}}上述方法中,通過(guò)鍵盤(pán)錄入,完成為指定數(shù)組元素賦值。方法定義時(shí),將參數(shù)定義為字符串?dāng)?shù)組,用于接收存放的同學(xué)姓名。
?打印全班同學(xué)每一個(gè)人的名字
/*** 2打印全班同學(xué)每一個(gè)人的名字*/public static void printStudentName(String[] students) {//遍歷數(shù)組,得到每個(gè)同學(xué)名字for (int i = 0; i < students.length; i++) {String name = students[i];//打印同學(xué)名字System.out.println("第"+i+"個(gè)學(xué)生名稱(chēng):" + name);}}上述方法中,方法參數(shù)students數(shù)組中存儲(chǔ)了所有學(xué)生的姓名。
通過(guò)遍歷將數(shù)組中的每一個(gè)元素訪問(wèn)一遍,得到每一個(gè)同學(xué)名稱(chēng)。
? 3.獲取隨機(jī)點(diǎn)到的學(xué)生姓名
/*** 3.在班級(jí)總?cè)藬?shù)范圍內(nèi),隨機(jī)產(chǎn)生一個(gè)隨機(jī)數(shù),返回隨機(jī)數(shù)位置上的學(xué)生姓名*/ public static String randomStudentName(String[] students) {//根據(jù)數(shù)組長(zhǎng)度,獲取隨機(jī)索引int index = new Random().nextInt(students.length);//通過(guò)隨機(jī)索引從數(shù)組中獲取名稱(chēng)String name = students[index];//返回隨機(jī)點(diǎn)到的名稱(chēng)return name;}上述方法中,通過(guò)隨機(jī)數(shù)類(lèi)Random產(chǎn)生一個(gè)從0到數(shù)組長(zhǎng)度的隨機(jī)索引。使用該索引獲取students數(shù)組中對(duì)應(yīng)的值,便得到了全班同學(xué)的隨機(jī)姓名。
? 庫(kù)存管理案例
3.1? ? ?案例介紹
現(xiàn)在,我們將原有的庫(kù)存管理案例,進(jìn)行業(yè)務(wù)邏輯的封裝。
將對(duì)下列功能進(jìn)行方法封裝:
? 打印庫(kù)存清單功能
? 庫(kù)存商品數(shù)量修改功能
? 退出程序功能
3.2? ? ? 案例需求分析
管理員能夠進(jìn)行的操作有3項(xiàng)(查看、修改、退出),我們可以采用(switch)菜單的方式來(lái)完成。
-------------庫(kù)存管理------------
1.查看庫(kù)存清單
2.修改商品庫(kù)存數(shù)量
3.退出
請(qǐng)輸入要執(zhí)行的操作序號(hào):
??????? 每一項(xiàng)功能操作,我們采用方法進(jìn)行封裝,這樣,可使程序的可讀性增強(qiáng)。
選擇“1.查看庫(kù)存清單”功能,則控制臺(tái)打印庫(kù)存清單
選擇“2.修改商品庫(kù)存數(shù)量”功能,則對(duì)每種商品庫(kù)存數(shù)進(jìn)行更新
選擇“3.退出”功能,則退出庫(kù)存管理,程序結(jié)束
3.3? ? ? 實(shí)現(xiàn)代碼步驟
編寫(xiě)代碼Demo庫(kù)存管理.java,完成如下功能:
? 功能菜單
/*** 庫(kù)存管理功能菜單* @return 管理員鍵盤(pán)輸入的功能操作序號(hào) */public static int chooseFunction() {System.out.println("-------------庫(kù)存管理------------");System.out.println("1.查看庫(kù)存清單");System.out.println("2.修改商品庫(kù)存數(shù)量");System.out.println("3.退出");System.out.println("請(qǐng)輸入要執(zhí)行的操作序號(hào):");//接收鍵盤(pán)輸入的功能選項(xiàng)序號(hào)Scanner sc = new Scanner(System.in); int choose = sc.nextInt();return choose;}上述方法用來(lái)完成庫(kù)存管理功能菜單的顯示、接收管理員選擇的功能操作序號(hào)。這是完成了案例的第一步。接下來(lái)完成“查看、修改、退出”這三項(xiàng)功能。
? 編寫(xiě)main主方法,調(diào)用庫(kù)存管理功能菜單方法,與“查看、修改、退出”這三個(gè)方法。
public static void main(String[] args) {//記錄庫(kù)存商品信息//品牌型號(hào)String[] brands = new String[]{"MacBookAir", "ThinkpadT450"};//尺寸大小double[] sizes = new double[]{13.3, 14.0};//價(jià)格double[] prices = new double[]{6988.88, 5999.99};//庫(kù)存?zhèn)€數(shù)int[] counts = new int[]{0, 0};//通過(guò)while循環(huán)模擬管理員進(jìn)行功能重復(fù)選擇操作while (true) {//打印功能菜單操作,接收鍵盤(pán)輸入的功能選項(xiàng)序號(hào)int choose = chooseFunction();//執(zhí)行序號(hào)對(duì)應(yīng)的功能switch (choose) {case 1://查看庫(kù)存清單 printStore(brands, sizes, prices, counts);break;case 2://修改商品庫(kù)存數(shù)量 update(brands, counts);break;case 3://退出 exit();return;default:System.out.println("----------------------------------");System.out.println("功能選擇有誤,請(qǐng)輸入正確的功能序號(hào)!");break;}}}?
?
在主方法中,創(chuàng)建了5個(gè)數(shù)組,分別用來(lái)存儲(chǔ)商品的品牌型號(hào)、尺寸大小、價(jià)格、配置、庫(kù)存?zhèn)€數(shù),通過(guò)接收到的功能選項(xiàng)序號(hào),進(jìn)行switch語(yǔ)句判斷后,調(diào)用對(duì)應(yīng)的功能方法。
? 查看庫(kù)存清單功能
/*** 查看庫(kù)存清單* @param brands 商品品牌型號(hào)* @param sizes 商品尺寸大小 * @param prices 商品價(jià)格* @param counts 商品庫(kù)存?zhèn)€數(shù)*/public static void printStore(String[] brands, double[] sizes, double[] prices, int[] counts) {//統(tǒng)計(jì)總庫(kù)存?zhèn)€數(shù)、統(tǒng)計(jì)庫(kù)存總金額int totalCount = 0;double totalMoney = 0.0;for (int i = 0; i < brands.length; i++) {totalCount += counts[i];totalMoney += counts[i] * prices[i];}//列表頂部System.out.println("---------------------------查看庫(kù)存清單--------------------------");System.out.println("品牌型號(hào) 尺寸 價(jià)格 庫(kù)存數(shù)");//列表中部for (int i = 0; i < brands.length; i++) {System.out.println(brands[i]+" "+sizes[i]+" "+prices[i]+" "++counts[i]);}//列表底部System.out.println("-------------------------------------------------------------");System.out.println("總庫(kù)存數(shù):"+totalCount); System.out.println("庫(kù)存商品總金額:"+totalMoney);}上述方法用來(lái)完成打印庫(kù)存清單功能,5個(gè)方法參數(shù)用來(lái)打印的庫(kù)存商品相關(guān)信息
? 修改商品庫(kù)存數(shù)量功能
/*** 修改商品庫(kù)存數(shù)量* @param brands 商品品牌型號(hào)* @param counts 商品庫(kù)存?zhèn)€數(shù)*/public static void update(String[] brands, int[] counts){System.out.println("------------修改商品庫(kù)存數(shù)量-----------");for (int i = 0; i < brands.length; i++) {System.out.println("請(qǐng)輸入"+ brands[i] +"商品庫(kù)存數(shù)");counts[i] = new Scanner(System.in).nextInt();}}?
?
上述方法用來(lái)完成修改商品庫(kù)存數(shù)量功能,2個(gè)方法參數(shù)用來(lái)指定所要修改的商品與庫(kù)存數(shù)
退出功能
/*** 退出*/public static void exit(){System.out.println("----------------退出---------------");System.out.println("您已退出系統(tǒng)");}?
? ? ? ? ?上述方法用來(lái)完成退出程序的功能
? ? ?總結(jié)
4.1? ? ? 知識(shí)點(diǎn)總結(jié)
?方法
? 格式:
??????????????????????????? 修飾符 返回值類(lèi)型 方法名(參數(shù)類(lèi)型 參數(shù)名1, 參數(shù)類(lèi)型 參數(shù)名2, ...) {
???????????????????????????????????? 方法體;
???????????????????????????????????? return 返回值;
???????? ???????? ???????? }
? 方法使用的注意事項(xiàng):
??????????????????????????? 1,方法不調(diào)用,自己不執(zhí)行
??????????????????????????? 2,方法中不能定義方法, 但是,方法中可以調(diào)用方法
??????????????????????????? 3, 方法定義的位置在類(lèi)中,其他方法的外面
??????????????????????????? 4, 如果方法沒(méi)有明確的返回值類(lèi)型,使用'空'類(lèi)型, void表示
??????????????????????????? 5,void只能在方法返回值類(lèi)型位置使用,不能作為 普通的數(shù)據(jù)類(lèi)型使用
??????????????????????????? 6, 如果方法返回值類(lèi)型為void類(lèi)型,可以省略 return ;
? 方法調(diào)用方式:
???????? 有明確返回值類(lèi)型的方法調(diào)用方式:
?????????????????? 1,單獨(dú)調(diào)用
?????????????????? 2,輸出調(diào)用
?????????????????? 3,賦值調(diào)用
???????? 沒(méi)有明確返回值類(lèi)型的方法調(diào)用方式:
1,? 單獨(dú)調(diào)用
? 方法重載:
方法重載,在同一個(gè)類(lèi)中,出現(xiàn)了多個(gè)同名的方法,他們的參數(shù)列表不同 (參數(shù)列表的個(gè)數(shù)不同,參數(shù)列表的數(shù)據(jù)類(lèi)型不同,參數(shù)列表的順序不同)。
方法重載特點(diǎn):
與方法的返回值類(lèi)型無(wú)關(guān),與方法的參數(shù)名無(wú)關(guān),只看方法名與參數(shù)列表;
???????? 方法重載,是通過(guò)JVM來(lái)完成同名方法的調(diào)用的,通過(guò)參數(shù)列表來(lái)決定調(diào)用的是哪一個(gè)方法。
?
轉(zhuǎn)載于:https://www.cnblogs.com/759hongcheng/p/8350070.html
總結(jié)
以上是生活随笔為你收集整理的Java基础 五 方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php随机生成车牌号,生成汽车牌照
- 下一篇: 《Java高并发编程详解:多线程与架构设