Java方法詳解
今日雜談
剛開始接觸Java的時候宿饱,感覺方法就是c里的函數(shù)攀操,后來發(fā)現(xiàn)它們雖然相似但又不盡相同拍埠。
首先對于Java方法來說,它有四種訪問權限勺届,包括static private default protected驶俊;其中的static方法和C函數(shù)是更加相似的,包括名稱免姿、返回值類型饼酿、參數(shù)列表以及函數(shù)體,同時都是靜態(tài)的胚膊。
其次故俐,Java的方法可以進行重載,C是不支持的紊婉。
再者药版,Java方法是屬于類或者對象的,C函數(shù)我講不出來它屬于什么喻犁。
寫這一段的時候不由得想到了微服務分布式開發(fā)槽片,把一個系統(tǒng)進行原子級拆分何缓,一個微服務實現(xiàn)一個功能,其實這些思想是共通的筐乳,編程中最重要的還是思路和想法歌殃。方法在程序中被創(chuàng)建,在其他地方被引用蝙云,這種低耦合的思想再擴大一點就是代碼功能的解耦氓皱,再擴大一點就是微服務框架的起源了。
方法的定義
前面提到Java方法類似于其他語言的函數(shù)勃刨,是一段用來完成特定功能的代碼片段波材。
Java方法是語句的集合,是一種功能塊身隐;一個集合執(zhí)行一個功能廷区,所以我們在設計方法的時候,最好保持方法的原子性贾铝,即一個方法完成一個功能隙轻,這樣有利于后期拓展
一般來說,方法包含一個方法頭和一個方法體垢揩。
方法頭
修飾符:可選玖绿,定義方法的訪問類型;如public叁巨,private之類
返回值:returnValueType是方法返回值的數(shù)據(jù)類型斑匪。沒有返回值就寫void
方法名:方法的實際名稱
-
參數(shù)類型:方法被調用,把值傳遞給參數(shù)锋勺。這個值被稱為實參或者變量蚀瘸。
參數(shù)列表是指方法的參數(shù)類型、順序和參數(shù)的個數(shù)庶橱。參數(shù)是可選的贮勃,方法可以不包含任何參數(shù)。
-
形參&實參:形參是方法調用時用于接收外界輸入的數(shù)據(jù)的參數(shù)苏章,用來定義作用寂嘉。
? 實參是方法調用時實際傳進來的數(shù)據(jù)
方法體
內含具體的語句,用來寫功能布近。諸如登錄時的密碼驗證垫释,把查詢的數(shù)據(jù)送到前端之類的。
方法的調用
調用方法時撑瞧,要寫出對象名和方法名棵譬。
一點小特征:如果一個方法的返回值是void,調用起來一定是一條語句预伺,例如這個System.out.println方法订咸,是一個完整的語句曼尊。
System.out.println("Hello World");
? 如果方法返回有值的時候,方法調用通常被直接當做一個值脏嚷,max方法是java中用于比較數(shù)字大小并返回較大者的一個方法骆撇,此處用于賦值給max變量。
int max = max(10,20)
拓展:值傳遞 & 引用傳遞
方法被調用的時候父叙,實參把自己復制一份給形參再傳入方法內部神郊,此時形參接收到的內容只是一個副本,所以在方法內對該數(shù)值進行操作趾唱,都是只對這個副本進行操作涌乳,不會影響到原始值的內容。
Java不存在引用傳遞甜癞。記住就好夕晓,具體原理涉及到JVM底層,以后我再詳細寫寫這一塊悠咱。
方法的重載
方法命名相同蒸辆,但形參不同,這就是重載的基本定義析既。如下躬贡,在這同一個類中用了兩個命名一樣的方法,但參數(shù)類型不同渡贾。
規(guī)則:
- 方法名稱必須相同
- 參數(shù)列表必須不同(參數(shù)個數(shù)逗宜,參數(shù)類型不同雄右,排列不同)
如下例子空骚,兩個max函數(shù)姓名一樣,
public static double max (double a,double b){
double result = 0;
//(比大小)
return result
}
public static int max (int a,int b){
int result = 0;
//(比大小)
return result
}