標籤:
方法執行原理:(方法不調用不執行,調用才執行)
* 方法在調用的這時候,才會在記憶體中劃分空間
* 方法在調用的時候,是在棧記憶體中分配的空間(jvm有一塊記憶體是棧記憶體)
* 函數/方法目的: 還是為了代碼重用
* 相同的類型的操作,不容重複的寫代碼
* 函數/方法:就是一段有名字的程式碼片段
* 方法的定義
* [方法修飾符列表] 方法傳回值類型 方法名(參數1,參數2,參數3....){
* 執行語句;
* }
*
* 方法修飾符列表是可選的:許可權控制的:public protected private /static
* 傳回值類型:11中資料類型中的任意一種類型
* 沒有傳回值就:void
* 方法名只要是合法的標識符即可
* 方法形參列表,多個逗號隔開,形參也要指明資料類型;
* 形參:是指在函數/方法定義處,那些參數;資料類型 變數名, 資料類型,變數名,
* 實參:是指在函數調用處,傳入的那個參數.
* 在方法體內部,如果有傳回值(類型),用return語句;且return是結束函數的作用
* 方法的調用:從記憶體資料結構來講就是壓棧
* 方法的結束:從記憶體資料結構來講就是彈棧
* 方法的重載:
* 同一個類中,方法名相同,參數列表不同的方法叫方法的重載;
* 參數列表不同:可以是參數個數不同,可以是參數資料類型不同
* 方法的重載和傳回值,和修飾符列表無關.
* 棧:這個十一中資料結構,就像彈夾,薯片盒子,後進去先出來
下面是遞迴調用的例子:
public class Method_10{
public static void main(String[] args){ //方法main入口
int i=100; //聲明資料類型i,賦值為100
m_1(i); //調用m1方法,賦值i為100
System.out.println( "hello world" );//調用m1後完成賦值,輸出內容
}
public static void m1(int i){ //聲明m_1方法
m_2(i) ; //調用m_2方法,i賦值為100
System.out.println( "方法m_1被調用了" );//運行原理:m_1方法中調用好了m_2,聲明m_2方法並調用方法m_3,聲明方法m_3,在m_3中輸出"m3的方法中i="+i;輸出m_3被調用了,i被賦值為100,m_3運行完後返回調用m_3處,在m_2聲明中,m_3調用運行完成,輸出方法m_2被調用;聲名m_2運行完後,返回調用m_2處,在聲明m_1中,m_2運行完成,輸出"方法m_1被調用",返回調用m_1處,輸出"hello word"
}
public static void m_2(int i){
m_3(i);
System.out.println( "方法m_2被調用了" );
}
public static void m_3(int i){
System.out.println( "m_3方法中的i="+ i );
System.out.println( "方法m_3被調用了" );
}
}
這是我剛學習的內容,印象還比較深刻,所以總結一下,記錄下來,方便以後查看,本文內容都是我根據自己的理解寫下來的,有什麼不對的地方還希望和大家多多交流,O(∩_∩)O謝謝!
java中方法的知識點和遞迴調用