1. 方法概述
1.1 方法的概念
? 方法(method)是程序中最小的執(zhí)行單元
- 注意:
- 方法必須先創(chuàng)建才可以使用,該過程成為方法定義
- 方法創(chuàng)建后并不是直接可以運行的,需要手動使用后,才執(zhí)行,該過程成為方法調(diào)用
2. 方法的定義和調(diào)用
2.1 無參數(shù)方法定義和調(diào)用
-
定義格式:
public static void 方法名 ( ) { // 方法體; }
-
范例:
public static void method ( ) { // 方法體; }
-
調(diào)用格式:
方法名();
-
范例:
method();
-
注意:
? 方法必須先定義,后調(diào)用,否則程序?qū)箦e
2.3 無參數(shù)方法的練習(xí)
- 需求:設(shè)計一個方法用于打印兩個數(shù)中的較大數(shù)
- 思路:
- ①定義一個方法,用于打印兩個數(shù)字中的較大數(shù),例如getMax()
- ②方法中定義兩個變量,用于保存兩個數(shù)字
- ③使用分支語句分兩種情況對兩個數(shù)字的大小關(guān)系進行處理
- ④在main()方法中調(diào)用定義好的方法
- 代碼:
public class MethodTest {
public static void main(String[] args) {
//在main()方法中調(diào)用定義好的方法
getMax();
}
//定義一個方法,用于打印兩個數(shù)字中的較大數(shù),例如getMax()
public static void getMax() {
//方法中定義兩個變量,用于保存兩個數(shù)字
int a = 10;
int b = 20;
//使用分支語句分兩種情況對兩個數(shù)字的大小關(guān)系進行處理
if(a > b) {
System.out.println(a);
} else {
System.out.println(b);
}
}
}
3. 帶參數(shù)方法定義和調(diào)用
3.1 帶參數(shù)方法定義和調(diào)用
-
定義格式:
參數(shù):由數(shù)據(jù)類型和變量名組成 - 數(shù)據(jù)類型 變量名
參數(shù)范例:int a
public static void 方法名 (參數(shù)1) { 方法體; } public static void 方法名 (參數(shù)1, 參數(shù)2, 參數(shù)3...) { 方法體; }
-
范例:
public static void isEvenNumber(int number){ ... } public static void getMax(int num1, int num2){ ... }
-
注意:
方法定義時,參數(shù)中的數(shù)據(jù)類型與變量名都不能缺少,缺少任意一個程序?qū)箦e 方法定義時,多個參數(shù)之間使用逗號( ,)分隔
-
-
調(diào)用格式:
方法名(參數(shù)); 方法名(參數(shù)1,參數(shù)2);
-
范例:
isEvenNumber(10); getMax(10,20);
- 方法調(diào)用時,參數(shù)的數(shù)量與類型必須與方法定義中的設(shè)置相匹配,否則程序?qū)箦e
3.2 形參和實參
- 形參:方法定義中的參數(shù)
? 等同于變量定義格式,例如:int number
- 實參:方法調(diào)用中的參數(shù)
? 等同于使用變量或常量,例如: 10 number
3.3 帶參數(shù)方法練習(xí)
- 需求:設(shè)計一個方法用于打印兩個數(shù)中的較大數(shù),數(shù)據(jù)來自于方法參數(shù) }
- 思路:
- ①定義一個方法,用于打印兩個數(shù)字中的較大數(shù),例如getMax()
- ②為方法定義兩個參數(shù),用于接收兩個數(shù)字
- ③使用分支語句分兩種情況對兩個數(shù)字的大小關(guān)系進行處理
- ④在main()方法中調(diào)用定義好的方法(使用常量)
- ⑤在main()方法中調(diào)用定義好的方法(使用變量)
- 代碼:
public class MethodTest {
public static void main(String[] args) {
//在main()方法中調(diào)用定義好的方法(使用常量)
getMax(10,20);
//調(diào)用方法的時候,人家要幾個,你就給幾個,人家要什么類型的,你就給什么類型的
//getMax(30);
//getMax(10.0,20.0);
//在main()方法中調(diào)用定義好的方法(使用變量)
int a = 10;
int b = 20;
getMax(a, b);
}
//定義一個方法,用于打印兩個數(shù)字中的較大數(shù),例如getMax()
//為方法定義兩個參數(shù),用于接收兩個數(shù)字
public static void getMax(int a, int b) {
//使用分支語句分兩種情況對兩個數(shù)字的大小關(guān)系進行處理
if(a > b) {
System.out.println(a);
} else {
System.out.println(b);
}
}
}
4. 帶返回值方法的定義和調(diào)用
4.1 帶返回值方法定義和調(diào)用
-
定義格式
public static 數(shù)據(jù)類型 方法名 ( 參數(shù) ) { return 數(shù)據(jù) ; }
-
范例
public static boolean isEvenNumber( int number ) { return true ; } public static int getMax( int a, int b ) { return 100 ; }
- 注意:
- 方法定義時return后面的返回值與方法定義上的數(shù)據(jù)類型要匹配,否則程序?qū)箦e
- 注意:
-
調(diào)用格式
方法名 ( 參數(shù) ) ; 數(shù)據(jù)類型 變量名 = 方法名 ( 參數(shù) ) ;
-
范例
isEvenNumber ( 5 ) ; boolean flag = isEvenNumber ( 5 );
- 注意:
- 方法的返回值通常會使用變量接收,否則該返回值將無意義
- 注意:
4.2 帶返回值方法練習(xí)1
-
需求:設(shè)計一個方法可以獲取兩個數(shù)的較大值,數(shù)據(jù)來自于參數(shù)
-
思路:
- ①定義一個方法,用于獲取兩個數(shù)字中的較大數(shù)
- ②使用分支語句分兩種情況對兩個數(shù)字的大小關(guān)系進行處理
- ③根據(jù)題設(shè)分別設(shè)置兩種情況下對應(yīng)的返回結(jié)果
- ④在main()方法中調(diào)用定義好的方法并使用變量保存
- ⑤在main()方法中調(diào)用定義好的方法并直接打印結(jié)果
-
代碼:
public class MethodTest { public static void main(String[] args) { //在main()方法中調(diào)用定義好的方法并使用變量保存 int result = getMax(10,20); System.out.println(result); //在main()方法中調(diào)用定義好的方法并直接打印結(jié)果 System.out.println(getMax(10,20)); } //定義一個方法,用于獲取兩個數(shù)字中的較大數(shù) public static int getMax(int a, int b) { //使用分支語句分兩種情況對兩個數(shù)字的大小關(guān)系進行處理 //根據(jù)題設(shè)分別設(shè)置兩種情況下對應(yīng)的返回結(jié)果 if(a > b) { return a; } else { return b; } } }
4.3 帶返回值方法練習(xí)2
需求:
? 定義一個方法,求一家商場每個季度的營業(yè)額。根據(jù)方法結(jié)果再計算出全年營業(yè)額。
代碼示例:文章來源:http://www.zghlxwxcb.cn/news/detail-628478.html
package com.itheima.demo;
public class MethodDemo9 {
public static void main(String[] args) {
/*需求:定義一個方法,求一家商場每個季度的營業(yè)額。
根據(jù)方法結(jié)果再計算出全年營業(yè)額。*/
int sum1 = getSum(10, 20, 30);
int sum2 = getSum(10, 20, 30);
int sum3 = getSum(10, 20, 30);
int sum4 = getSum(10, 20, 30);
int sum = sum1 + sum2 + sum3 + sum4;
System.out.println(sum);
}
//心得:
//1.我要干嘛? 決定了方法體 每個季度的營業(yè)額
//2.我干這件事情,需要什么才能完成? 決定了形參 需要三個月的營業(yè)額 a b c
//3.我干完這件事情,看調(diào)用處是否需要使用方法的結(jié)果。 決定了返回值
//如果需要使用,那么必須返回
//如果不需要使用,可以返回也可以不返回
public static int getSum(int month1,int month2,int month3){
int sum = month1 + month2 + month3;
//因為方法的調(diào)用處,需要繼續(xù)使用這個結(jié)果
//所以我們必須要把sum返回
return sum;
}
}
4.4 帶返回值方法練習(xí)3
需求:
? 鍵盤錄入兩個圓的半徑(整數(shù)),比較兩個圓的面積。
代碼示例:
import java.util.Scanner;
public class MethodDemo10 {
public static void main(String[] args) {
//需求:鍵盤錄入兩個圓的半徑(整數(shù)),比較兩個圓的面積。
//鍵盤錄入圓的半徑
Scanner sc = new Scanner(System.in);
System.out.println("請輸入圓的半徑");
int radii1 = sc.nextInt();
System.out.println("請輸入第二個圓的半徑");
int radii2 = sc.nextInt();
double area1 = getArea(radii1);
double area2 = getArea(radii2);
if(area1 > area2){
System.out.println("第一個圓更大");
}else{
System.out.println("第二個圓更大");
}
}
//心得:
//1.我要干嘛? 求圓的面積
//2.我干這件事情,需要什么才能完成? 半徑
//3.方法的調(diào)用處,是否需要繼續(xù)使用方法的結(jié)果 要比較
public static double getArea(int radii) {
double area = 3.14 * radii * radii;
return area;
}
}
5. 方法的注意事項
5.1 方法的注意事項
-
方法不能嵌套定義
-
示例代碼:
public class MethodDemo { public static void main(String[] args) { } public static void methodOne() { public static void methodTwo() { // 這里會引發(fā)編譯錯誤!!! } } }
-
-
void表示無返回值,可以省略return,也可以單獨的書寫return,后面不加數(shù)據(jù)
-
示例代碼:
public class MethodDemo { public static void main(String[] args) { } public static void methodTwo() { //return 100; 編譯錯誤,因為沒有具體返回值類型 return; //System.out.println(100); return語句后面不能跟數(shù)據(jù)或代碼 } }
-
5.2 方法的通用格式
-
格式:
public static 返回值類型 方法名(參數(shù)) { 方法體; return 數(shù)據(jù) ; }
-
解釋:
-
public static 修飾符,目前先記住這個格式
返回值類型 方法操作完畢之后返回的數(shù)據(jù)的數(shù)據(jù)類型
? 如果方法操作完畢,沒有數(shù)據(jù)返回,這里寫void,而且方法體中一般不寫return
方法名 調(diào)用方法時候使用的標識
參數(shù) 由數(shù)據(jù)類型和變量名組成,多個參數(shù)之間用逗號隔開
方法體 完成功能的代碼塊
return 如果方法操作完畢,有數(shù)據(jù)返回,用于把數(shù)據(jù)返回給調(diào)用者
-
-
定義方法時,要做到兩個明確
- 明確返回值類型:主要是明確方法操作完畢之后是否有數(shù)據(jù)返回,如果沒有,寫void;如果有,寫對應(yīng)的數(shù)據(jù)類型
- 明確參數(shù):主要是明確參數(shù)的類型和數(shù)量
-
調(diào)用方法時的注意:
- void類型的方法,直接調(diào)用即可
- 非void類型的方法,推薦用變量接收調(diào)用
6. 方法重載
6.1 方法重載
-
方法重載概念
方法重載指同一個類中定義的多個方法之間的關(guān)系,滿足下列條件的多個方法相互構(gòu)成重載
- 多個方法在同一個類中
- 多個方法具有相同的方法名
- 多個方法的參數(shù)不相同,類型不同或者數(shù)量不同
-
注意:
- 重載僅對應(yīng)方法的定義,與方法的調(diào)用無關(guān),調(diào)用方式參照標準格式
- 重載僅針對同一個類中方法的名稱與參數(shù)進行識別,與返回值無關(guān),換句話說不能通過返回值來判定兩個方法是否相互構(gòu)成重載
-
正確范例:
public class MethodDemo { public static void fn(int a) { //方法體 } public static int fn(double a) { //方法體 } } public class MethodDemo { public static float fn(int a) { //方法體 } public static int fn(int a , int b) { //方法體 } }
-
錯誤范例:
public class MethodDemo { public static void fn(int a) { //方法體 } public static int fn(int a) { /*錯誤原因:重載與返回值無關(guān)*/ //方法體 } } public class MethodDemo01 { public static void fn(int a) { //方法體 } } public class MethodDemo02 { public static int fn(double a) { /*錯誤原因:這是兩個類的兩個fn方法*/ //方法體 } }
6.2 方法重載練習(xí)
-
需求:使用方法重載的思想,設(shè)計比較兩個整數(shù)是否相同的方法,兼容全整數(shù)類型(byte,short,int,long)
-
思路:
- ①定義比較兩個數(shù)字的是否相同的方法compare()方法,參數(shù)選擇兩個int型參數(shù)
- ②定義對應(yīng)的重載方法,變更對應(yīng)的參數(shù)類型,參數(shù)變更為兩個long型參數(shù)
- ③定義所有的重載方法,兩個byte類型與兩個short類型參數(shù)
- ④完成方法的調(diào)用,測試運行結(jié)果
-
代碼:
public class MethodTest { public static void main(String[] args) { //調(diào)用方法 System.out.println(compare(10, 20)); System.out.println(compare((byte) 10, (byte) 20)); System.out.println(compare((short) 10, (short) 20)); System.out.println(compare(10L, 20L)); } //int public static boolean compare(int a, int b) { System.out.println("int"); return a == b; } //byte public static boolean compare(byte a, byte b) { System.out.println("byte"); return a == b; } //short public static boolean compare(short a, short b) { System.out.println("short"); return a == b; } //long public static boolean compare(long a, long b) { System.out.println("long"); return a == b; } }
7.3 數(shù)組遍歷
-
需求:設(shè)計一個方法用于數(shù)組遍歷,要求遍歷的結(jié)果是在一行上的。例如:[11, 22, 33, 44, 55]
-
思路:
-
①因為要求結(jié)果在一行上輸出,所以這里需要在學(xué)習(xí)一個新的輸出語句System.out.print(“內(nèi)容”);
System.out.println(“內(nèi)容”); 輸出內(nèi)容并換行
System.out.print(“內(nèi)容”); 輸出內(nèi)容不換行
System.out.println(); 起到換行的作用
-
②定義一個數(shù)組,用靜態(tài)初始化完成數(shù)組元素初始化
-
③定義一個方法,用數(shù)組遍歷通用格式對數(shù)組進行遍歷
-
④用新的輸出語句修改遍歷操作
-
⑤調(diào)用遍歷方法
-
-
代碼:
public class Test1 { public static void main(String[] args) { /* //先打印數(shù)據(jù),再進行換行 System.out.println("aaa"); //只打印不換行 System.out.print("bbb"); System.out.print("ddd"); //不打印任何內(nèi)容,只換行 System.out.println(); System.out.print("cc");*/ //設(shè)計一個方法用于數(shù)組遍歷,要求遍歷的結(jié)果是在一行上的。例如:[11, 22, 33, 44, 55] int[] arr = {1,2,3,4,5}; printArr(arr); } //1.我要遍歷數(shù)組 //2.需要什么? 數(shù)組 //3.調(diào)用處是否需要使用方法的結(jié)果。 public static void printArr(int[] arr){ System.out.print("["); for (int i = 0; i < arr.length; i++) { if(i == arr.length - 1){ System.out.println(arr[i] + "]"); }else{ System.out.print(arr[i] + ", "); } } } }
7.4 數(shù)組最大值
-
需求:設(shè)計一個方法用于獲取數(shù)組中元素的最大值
-
思路:
- ①定義一個數(shù)組,用靜態(tài)初始化完成數(shù)組元素初始化
- ②定義一個方法,用來獲取數(shù)組中的最大值,最值的認知和講解我們在數(shù)組中已經(jīng)講解過了
- ③調(diào)用獲取最大值方法,用變量接收返回結(jié)果
- ④把結(jié)果輸出在控制臺
-
代碼:
public class MethodTest02 { public static void main(String[] args) { //定義一個數(shù)組,用靜態(tài)初始化完成數(shù)組元素初始化 int[] arr = {12, 45, 98, 73, 60}; //調(diào)用獲取最大值方法,用變量接收返回結(jié)果 int number = getMax(arr); //把結(jié)果輸出在控制臺 System.out.println("number:" + number); } //定義一個方法,用來獲取數(shù)組中的最大值 /* 兩個明確: 返回值類型:int 參數(shù):int[] arr */ public static int getMax(int[] arr) { int max = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x] > max) { max = arr[x]; } } return max; } }
7.6 獲取索引
需求:
? 定義一個方法獲取數(shù)字,在數(shù)組中的索引位置,將結(jié)果返回給調(diào)用處,如果有重復(fù)的,只要獲取第一個即可。
代碼示例:
package com.itheima.demo;
public class Test4 {
public static void main(String[] args) {
//定義一個方法獲取數(shù)字,在數(shù)組中的索引位置,將結(jié)果返回給調(diào)用處
//如果有重復(fù)的,只要獲取第一個即可
int[] arr = {1,2,3,4,5};
int index = contains(arr, 3);
System.out.println(index);
}
//1. 我要干嘛?判斷數(shù)組中的某一個數(shù)是否存在
//2. 需要什么?數(shù)組 數(shù)字
//3. 調(diào)用處是否需要繼續(xù)使用?返回
//獲取number在arr中的位置
public static int contains(int[] arr, int number) {
//遍歷arr得到每一個元素
for (int i = 0; i < arr.length; i++) {
//拿著每一個元素跟number比較
if(arr[i] == number){
//如果相等,表示找到了
return i;
}
}
//當循環(huán)結(jié)束之后,如果還不能返回索引,表示數(shù)組中不存在該數(shù)據(jù)
//可以返回-1
return -1;
}
}
后記
????????美好的一天,到此結(jié)束,下次繼續(xù)努力!欲知后續(xù),請看下回分解,寫作不易,感謝大家的支持??! ??????文章來源地址http://www.zghlxwxcb.cn/news/detail-628478.html
到了這里,關(guān)于從零開始學(xué)習(xí) Java:簡單易懂的入門指南之方法(六)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!