方法的作用
將重復的代碼包裝起來,寫成方法,提高代碼的復用性。
方法的語法
方法的語法格式如下 :
[修飾符] 方法返回值類型 方法名(形參列表)
{ //由零條到多條可執行性語句組成的方法體return 返回值;
}
定義方法語法格式的詳細說明如下:
修飾符:修飾符可以省略,也可以是 public 、 protected 、 private 、 static 、 final 、 abstract ,其中 public 、 protected 、 private 三個最多只能出現其中之一 ; final 和 abstract 最多只能出現其中之一 ,它們可以 與 static 組合起來修飾方法。
方法返回值類型:返回值類型可以是 Java 語言 允許的任何數據類型,包括基本類型和引用類型: 如果聲明了方法返回值類型,則方法體內必須有一個有效的 return語句,該語句返回 一個變量或一個表達式,這個變量或者表達式的類型必須與此處聲明的類型匹配.除此之外 , 如果一個方法沒有返回值,則必須使用 void 來聲明沒有返回值 .
方法名:方法名的命名規則與成員變量 的命名規則基本相同,但由于方法用于描述該類或該類 的實例的行為特征或功能實現,因此通常建議方法名以英文動詞開頭 .
形參列表:形參列表用于定義該方法可以接受的參數,形參列表由零組到多組"參數類型形參 名"組合而成 ,多組參數之間以英文逗號 ( ,)隔開,形參類型和形參名之間以英文空格隔開。 一旦在定義方法時指定了形參列表,則調用該方法時必須傳入對應的參數值即誰調用方法, 誰負責為形參賦值 。
方法體里多條可執行性語句之間有嚴格的執行順序,排在方法體前面的語句方法體里多條可執行性語句之間有嚴格的執行順序,排在方法體前面的語句總是先執行,排在方法體后面的語句總是后執行。
方法的歸屬
需要定義方法,則只能在類體內定義,不能獨立定義一個方法。一旦將一個方法定義在 某個類的類體內,如果這個方法使用了 static 修飾,則這個方法屬于這個類,否則這個方法屬于這個類的實例 。 Java 語言是靜態的 。一個類定義完成后,只要不再重新編譯這個類文件,該類和該類的對象所擁有的方法是固定的,永遠都不會改變 。 因為 Java 里的方法不能獨立存在,它必須屬于一個類或一個對象,因此方法也不能像函數那樣被獨立執行。
方法的傳參
聲明方法時包含了形參聲明,則調用方法時必須給這些形參指定參數值 , 調用方法時實際傳給形參的參數值被稱為實參.那么,Java 的實參值是如何傳入方法的呢?
這是由 Java 方法的參數傳遞機制來控制的, Java 里方法的參數傳遞方式只有一種 : 值傳遞。 所謂值傳遞,就是將實際參數值傳入方法內 , 而參數本身不會受到任何影響。
public class Prim
{
public static void swap (int a , int b)
{
// 下面三行代碼實現a,b變量的值交換
// 定義一個臨時變量來保存a變量的值
int tmp = a;
//把b的值賦給 a
a= b;
// 把臨時變量 tmp 的值賦給 a
b= tmp ;
System.out.println("swap 方法里, a 的值是 "
+ a + ":b 的值是 " + b);
}
public static void main(String[] args)
{int a = 6 ; int b = 9; swap(a , b) ;
System.out.println ("交換結束后,變量a的值是"
+a+":變量 b 的值是 " + b);
}
}
方法的重載
Java 允許同一個類里定義多個同名方法,只要形參列表不同就行。如果同一個類中包含了兩個或兩 個以上方法的方法名相同,但形參列表不同,則被稱為方法重載 。
方法重載的要求就是兩同一不同 :同 一個類中方法名相同,參數列表不同 。至于方法的其他部分,與方法的重載沒有任何關系。
public class Over1oad
{
//下面定義了兩個test ()方法,但方法的形參列表不同
//系統可以區分這兩個方法,這被稱為方法重載
public void test()
{System.out.println("無參數");
}
public void test(String msg)
{System.out.print1n("重載的test方法"+msg);}
pub1ic static void main(String[] args)
{Over1oad 01 = new Over1oad( );
//調用 test ()時沒有傳入參數,因此系統調用上面沒有參數的 test () 方法01.test () ;
//調用 test ()時傳入了一個字符串參數
//因此系統調用上面帶一個字符串參數的 test ()方法
01.test( "he11o " ) ;
}
}