在Java程序中,所有的方法調用都維護在一個稱為調用棧的結構中。當前正在執行的方法位于調用棧的頂部。當前方法執行完成后,就從調用棧的頂部移除,控制流程返回棧中的前一個方法。并且在程序中,第一個被調用的方法就是main(),該方法是JVM調用的。
如果一個Java程序是多線程應用程序,那么它可以有多個調用棧。
當一個方法正在執行時,會發生三種情況:①方法返回一個值。在這種情況下,一個基本數據類型或引用類型被傳回給方法的調用者。②方法不返回一個值。在這種情況下,返回值被聲明為void。③方法拋出一個異常給方法的調用者。
方法的簽名包括方法名、參數列表、返回值的數據類型等信息。例如,main()方法的簽名如下:
Public static void main(String[] args)
方法的簽名不包括方法體內的任何語句。簽名只是方法的聲明部分。
我們按照在聲明方法時出現的順序,列出方法簽名每個部分如下:
■訪問修飾符。訪問修飾符的可能值包括public、PRivate、protected或默認訪問修飾符(即沒有訪問修飾符)。
■可選修飾符。方法簽名的下一個部分是可選修飾符,包括static、final、abstract、native以及synchronize。
■返回值。方法簽名必須包括返回值的類型。如果方法不返回一個值,就使用void。否則,就要指定返回值的數據類型。返回值的數據類型可以是八種數據類型之一或者一個引用類型。
■方法名。方法名必須出現在返回值之后。方法名可以是有效的Java標識符。
■形式參數列表。在方法名的后面必須是一對括號括起來的形式參數列表。
■拋出異常列表。方法可以拋出一個異常給方法的調用者。
一個方法的簽名包括一個形式參數的列表,形式參數列表用于聲明傳遞到方法中的數據的類型。傳遞給形式參數的數據稱為實際參數。
當實際參數傳遞給形式參數時,實際參數的數據被復制給形式參數。在編程中,在方法調用之間復制數據的過程稱為按值調用。
不管傳遞給方法的實際參數是什么類型,相關的形式參數都會得到該數據的一份拷貝,這就是按值調用的工作原理。
Java中允許方法被重載,當一個類有兩到多個同名但是有不同參數列表的方法時,就是方法重載(參數類型不同或者參數個數不同)。
構造器是類中的一個特殊的方法,該方法在對象實例化時被調用、構造器的用途是當對象實例化時初始化對象中的成員變量。
構造器與方法不同之處在于構造器必須滿足如下兩個屬性:①構造器的名稱必須與類名相同。②構造器不能聲明放返回值,也不能返回void。
當為類添加多個構造器時,應用了方法重載的規則。每個構造器必須有一個唯一的形式參數列表,以與其它構造器想區別。
如果一個類中沒有添加構造器,編譯器會給類添加一個默認的構造器。這個默認的構造器用public訪問修飾符限定,沒有形式參數,而且不做任何事情。
如果一個構造器用this關鍵字來調用本類中的其它構造器,那么這個this語句必須是本構造器的第一行,否則,會產生一個編譯器錯誤。
新聞熱點
疑難解答