①概念
方法是語句的集合,作用是執行某個功能。
① 方法是解決一類問題的步驟的有序組合
② 方法包含於類或對象中
③ 方法在程序中被創建,在其他地方被引用
②優點
1. 使程序變得更簡短而清晰。
2. 有利於程序維護。
3. 可以提高程序的開發效率。
4. 提高了代碼的重用性。 →解決重複性代碼的冗餘,重複在程序設計中是不好的味道(Bad Smell)。
③定義
一般情況下,定義一個方法包含以下語法,包含一個方法頭(method header)和一個方法體(method body)。
方法頭:
修飾符:告訴編譯器如何調用該方法,定義了該方法的訪問類型,修飾符是可選的。
返回值類型 :方法可能會返回值。returnValueType 是方法返回值的數據類型。沒有返回值用關鍵字void。
方法名:是方法的實際名稱。方法名和參數表共同構成方法簽名。
參數類型:當方法被調用時,傳遞值給參數。這個值被稱爲實參或變量。括號裏的叫做參數列表,是指方法的參數類型、順序和參數的個數,每個參數用逗號隔開。參數是可選的。
方法體:方法體包含具體語句,定義該方法的功能。
④調用
程序控制權:當程序調用一個方法時,程序的控制權交給了被調用的方法;當被調用方法的返回語句執行或者到達方法體閉括號時候交還控制權給程序。
調用方式:Java 支持兩種調用方法的方式,根據方法是否返回值來選擇。
① 當方法返回一個值的時候,方法調用通常被當做一個值。
② 如果方法返回值是void,方法調用一定是一條語句。
傳遞參數:一些程序語言在調用方法傳遞自變量給參數時,有傳值調用和傳參考調用。
而Java只有傳值調用,在調用方法時通過值傳遞參數(Pass by Value)
也就是說,當把對象作參傳入方法中,則對象與參數的參考會綁定在一起,改變參數的數據也會改變對象;參數建立新的對象,就會被重新引用參考。
調用一個方法的時候需要提供參數,你必須按照參數列表指定的順序提供。
注:c++和java語言的參考是兩種定義。而不是一回事。
⑤重載
在一個類中定義多個同名的方法,但要求每個方法具有不同的參數類型或參數個數,即擁有不同的參數列表。
與修飾符和返回值類型無關。
Java編譯器可以根據方法簽名判斷哪個方法應該被調用,處理不同類型的數據。
⑥變量作用域
變量的作用範圍指的是程序中該變量可以被引用的部分。
方法內定義的變量被稱爲局部變量。參數也是一種局部變量。局部變量的作用範圍從聲明開始,直到包含它的塊結束。(必須聲明纔可使用)
for循環的初始化時聲明的變量,其作用範圍在整個循環。
⑦命令行參數(main方法)
在命令行中給定的參數就是命令行參數。(即從輸入位置角度理解)
public static void main(String[] args)
一個程序開始於對函數main()的調用,有兩個參數被送給main(),
其中一個是描述了命令行參數的個數,通常稱爲argc;另一個是命令行參數的數組,通常稱爲argv。
命令行參數都是字符串,所以argv的類型是char* [argc+1]。該程序的名字也作爲argv[0]傳進來,所以argc的值至少是1。這個參數的表總以0結束,也就是說,argv[argc]==0。
更多詳見百度百科-命令行參數。
⑧可變參數
JDK 1.5 開始支持。
自變量/參數個數事先無法確定。在指定參數類型後面加...,這樣我們可以用不同個數的自變量實現方法。
一個方法中只能指定一個可變參數,它必須是參數列的最後一個參數。任何普通的參數必須在它之前聲明。
實質是編譯程序蜜糖,反編譯後是數組。
⑨構造方法(見"類"一節)