Java解析方法的調(diào)用關系示例詳解
一、方法的定義
方法就是 將功能重復的代碼封裝成一段獨立的代碼,通過調(diào)用方法的方式 (作用)提高代碼的復用性(減少代碼重復)。
每一個方法只能完成一個功能。
二、方法的聲明格式
[修飾符1,修飾符2] 返回值類型 方法名 (參數(shù)類型 形式參數(shù)1,參數(shù)類型 形式參數(shù)2,…){
執(zhí)行語句塊;
return 返回值;}
例:
boolean isLeapYear (int year){ //定義方法 boolean isLeap = false; if(year%4==0 && year%100 != 0 || year%400 != 0){ isLeap = true; } return isLeap; } public class MethodDemo01 { //提取一個方法,計算兩個數(shù)的和并返回 public static int addNum(int a,int b){ int sum = a +b; return sum; } //提取一個方法,計算三個數(shù)的和并打印 public static void addNum2(int a,int b,int c){ int sum = a +b +c; System.out.println(sum); } public static void main(String[] args) { //調(diào)用方法1,計算1+2的和 int sum1 = addNum(1,2); System.out.println(sum1); //調(diào)用方法1,計算3+4的和 System.out.println(addNum(3,4)); //調(diào)用方法,計算5+6+7的和并打印 addNum2(5,6,7); } }
- 返回值類型:方法輸出數(shù)據(jù)的類型(如果方法沒有返回值,則用關鍵字void來表示)
- 方法名:類似變量名,可以自定義方法名(需符合Java標識符規(guī)則)
- 形式參數(shù):變量(用于存儲調(diào)用方法輸入的數(shù)據(jù))
- 實際參數(shù):調(diào)用方法輸入的數(shù)據(jù)。
- 返回值:調(diào)用方法返回的數(shù)據(jù)。
三、方法的調(diào)用
int year= 2020; boolean leapYear =isLeapYear(year); //調(diào)用方法 if(leapYear){ System.out.println(year +"是閏年!") } year = 2052; leapYear =isLeapYear(year);//調(diào)用方法 if(leapYear){ System.out.println(year +"是閏年!") }
四、特殊方法:程序入口main方法
main方法是一個特殊方法,它是Java程序的入口方法,執(zhí)行Java程序時,JVM會調(diào)用main方法。
public static void main (String[]args){}
五、方法的局部變量
局部變量是指在方法中聲明的變量,其作用范圍僅限于方法中
局部變量使用前必須進行初始化。(定義在main方法中的變量也是局部變量)
boolean isLeapYear (int year){ boolean isLeap = false;//聲明了一個局部變量并進行初始化 if(year%4==0 && year%100 != 0 || year%400 != 0){ isLeap = true; } return isLeap; } public classA{ public static void main (String[]args){ int i =6; //整數(shù)(實參,局部變量) int [] array = {1,2,3}; //數(shù)組(實參,局部變量,傳數(shù)組的地址) test(i,array); System.out.println(i+""+array[0]); } public static void test(int i,int []array){ //形參 i += 3; array[0] += 3; } } //輸出結(jié)果:6 4
六、類的靜態(tài)變量
靜態(tài)變量(也稱為類變量)是使用static關鍵字聲明的變量,這些變量屬于類本身,而不是類的任何特定實例(靜態(tài)變量在使用前無需初始化。)
public class HellWorld{ public static boolean isLeap;//全局變量(默認自動化) public static void method01(){ // isLeap = true;//共享全局變量 } public static void method02(){ isLeap = true;//共享全局變量 } }
七、類的靜態(tài)方法
靜態(tài)方法是使用static關鍵字定義的方法,靜態(tài)方法可以訪問類的靜態(tài)變量和靜態(tài)方法,但不能訪問類的實例方法和實例變量。
八、方法的傳參
- 實參和形參
實參:調(diào)用方法輸入的變量或常量值
形參:方法中定義的數(shù)據(jù)類型變量。
值傳遞
實參將數(shù)據(jù)傳遞給形參時,形參的改變改變不影響原實參的值,即值傳遞只會改變形參,不會改變實參。(基本數(shù)據(jù)類型)引用傳遞
引用傳遞:是指在調(diào)用函數(shù)時,將實際參數(shù)的地址傳遞給函數(shù),這樣在函數(shù)中對參數(shù)的修改,將影響到實際參數(shù)。(引用數(shù)據(jù)類型)
引用數(shù)據(jù)傳遞的不是真正的數(shù)據(jù)地址,是引用的堆內(nèi)存中的地址,無論引用傳遞的數(shù)據(jù)怎么改變,它也只是引用的堆內(nèi)存中的地址,原數(shù)據(jù)組的數(shù)據(jù)地址并沒有被改變,改變那部分的值只是形參復制給實參使用的的地址,并不是把原地址改變。
- 總結(jié)
在Java中,參數(shù)傳參本質(zhì)上只存在值傳遞。
值傳遞時,形參改變并不會影響到實參。
在函數(shù)中,只有修改了實參所指向的對象內(nèi)容,也就是引用堆內(nèi)存中的地址,才會影響到實參
public classA{ public static void main (String[]args){ int i =6; //整數(shù)(實參,局部變量) int [] array = {1,2,3}; //數(shù)組(實參,局部變量,傳數(shù)組的地址) test(i,array); System.out.println(i+""+array[0]); } public static void test(int i,int []array){//形參 i += 3; array[0] += 3; } } //輸出結(jié)果:6 4
九、方法的重載
方法的重載指的是在同一個類中,有一個以上的同名方法,但方法的參數(shù)個數(shù)或參數(shù)類型有所不同(與方法的返回值無關)
方法重載是對于 一個類。
public static int addNum(int a,int b){ int sum = a +b; return sum; } //提取一個方法,計算三個數(shù)的和并打印 public static int addNum2(int a,int b,int c){ int sum = a +b +c; return sum; }
例如,以下都屬于方法的重載
void show (int a,char b,double c);
void show (int a,double b,char c);
void show (int a,int b);
void show (int a);
double show(int a,char b,double c);
總結(jié)
到此這篇關于Java解析方法的調(diào)用關系的文章就介紹到這了,更多相關Java方法的調(diào)用關系內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解spring boot jpa整合QueryDSL來簡化復雜操作
這篇文章主要介紹了詳解spring boot jpa整合QueryDSL來簡化復雜操作,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04Java 實戰(zhàn)練習之網(wǎng)上電商項目的實現(xiàn)
讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+Springboot+ssm+mysql+maven+redis實現(xiàn)一個網(wǎng)上電商項目,大家可以在過程中查缺補漏,提升水平2021-11-11Java Maven settings.xml中私有倉庫配置詳解
這篇文章主要介紹了詳解Maven settings.xml配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-10-10Java ScheduledExecutorService的具體使用
ScheduledExecutorService有線程池的特性,也可以實現(xiàn)任務循環(huán)執(zhí)行,本文主要介紹了Java ScheduledExecutorService的具體使用,具有一定的參考價值,感興趣的可以了解一下2023-05-05