1. 程式人生 > >Java學習筆記第二天——方法

Java學習筆記第二天——方法

方法:其實就是完成特定功能的程式碼塊 定義格式: 修飾符 返回值型別 方法名(引數型別 引數名1,引數型別 引數名2……){ 方法體; return 返回值; }

格式解釋: 1.修飾符 目前記住public static 2.返回值型別 用於限定返回值的資料型別 3.方法名 為了方便我們呼叫方法的名字 - 引數型別 用於限定呼叫方法時傳入的資料的型別 - 引數名 用於接收呼叫方法時傳入的資料的變數 - 方法體 完成功能的程式碼 - return 結束方法,並把返回值帶給呼叫者

寫一個方法有兩個明確: - A:返回值型別 明確功能結果的資料型別 - B:引數列表 明確有幾個引數,以及引數的型別

方法的呼叫:(有明確返回值的方法呼叫) - A:單獨呼叫,沒有意義 - B:輸出呼叫,有意義,但是不夠好因為我可能需要拿到結果進行進一步操作 - C:賦值呼叫,推薦方式

有明確返回值的方法使用eg:

public class MethodDemo {
    public static void main(String[] args) {
        //單獨呼叫
        sum(10,20);

        //輸出呼叫
        System.out.println(sum(10,20));

        //賦值呼叫
        int result = sum(10
,20); //可以對result進行進一步操作 //result += 10; System.out.println(result); } public static int sum(int a,int b){ int c = a + b; return c; } }

方法的呼叫:(void修飾的方法的呼叫) - 只能單獨呼叫 - 如果一個方法沒有明確的返回值型別,也不能把返回值型別空出來,應該寫void表示該方法無返回值型別

void修飾的方法使用eg

 public class MethodDemo {
public
static void main(String[] args) { //單獨呼叫 printHelloWorld(); //輸出呼叫 //System.out.println(printHelloWorld()); //賦值呼叫 //void x = printHelloWorld(); } public static void printHelloWorld(){ for(int i=0;i<10;i++){ System.out.println("HelloWorld!"); } } }

方法過載: 1.方法名相同,引數列表不同,與返回值無關 2.引數列表不同: ①引數的個數不同 ②引數對應的資料型別不同 注意:在呼叫方法的時候,Java虛擬機器會通過引數列表的不同來區分同名的方法

方法過載eg

public class MethodDemo {
public static void main(String[] args) {
//定義變數
int a = 10;
int b = 20;

//求和方法
int result = sum(a,b);
System.out.println("result:"+result);

//定義變數
int c = 30;

//求和方法
int result2 = sum(a,b,c);
System.out.println("result2:"+result2);

//求和方法
float result3 = sum(a,b);
System.out.println("result3:"+result3);
}
public static int sum(int a, int b){
return a+b;
}
public static int sum(int a,int b,int c){
return a+b+c;
}
public static float sum(float a,float b){
return a+b;
}

}

方法的引數如果是基本資料型別:形式引數的改變不影響實際引數 形式引數:用於接收實際引數的變數 實際引數:實際參與運算的變數 方法的引數是基本資料型別eg

public class ArgsDemo {
public static void main(String[] args) {
    int a = 10;
    int b = 20;
    System.out.println("a:"+a+"b:"+b);  //a:10 b:20
    change(a,b);
    System.out.println("a:"+a+"b:"+b);  //a:10 b:20
}
public static void change(int a,int b){
    System.out.println("a:"+a+"b:"+b);  //a:10 b:20
    a=b;
    b=b+a;
    System.out.println("a:"+a+"b:"+b);  //a:20 b:40
}
}

如果引數是引用資料型別:形式引數的改變直接影響實際引數 兩個引用指向同一個堆記憶體,任何一個引用對他產生的操作,另一個都直接受影響

引數是引用資料型別eg

public class ArgsDemo2 {
public static void main(String[] args) {
    int[] arr = {1,2,3,4,5};
    for(int i = 0;i < arr.length;i++){
        System.out.println(arr[i]);
    }
    change(arr);
    for(int x=0;x<arr.length;x++){
        System.out.println(arr[x]);
    }
}
public static void change(int[] arr){
    for(int x=0;x<arr.length;x++){
        if(arr[x]%2==0)
        {
            arr[x] *= 2;
        }
    }

}
}