java基礎(chǔ)之方法詳解
一、什么是方法
- Java方法是語(yǔ)句的集合,他們?cè)谝黄饒?zhí)行一個(gè)功能。
1.方法是解決一類問(wèn)題的步驟的有序組合
2.方法包含于類或?qū)?duì)象中
3.方法在程序中被創(chuàng)建,在其他地方被應(yīng)用
- 設(shè)計(jì)方法的原則:方法的本意是功能塊,就是實(shí)現(xiàn)某個(gè)功能的語(yǔ)句塊的結(jié)合。我們?cè)O(shè)計(jì)方法的時(shí)候,最好保持方法的原子性,就是一個(gè)方法只完成一個(gè)功能,這樣利于我們后期的擴(kuò)展。
當(dāng)然只讀文字不能完全理解,下面的代碼一定要自己一個(gè)個(gè)敲,仔細(xì)品味:
//類 public class Demo01 { //mian方法,可理解為系統(tǒng)自定義的一個(gè)方法(一個(gè)類中必須要有mian方法) public static void main(String[] args) { int sum=add(1,2); System.out.println(sum); } //自定義一個(gè)"加法" //方法中寫入了static是為了其他方法中方便調(diào)用它(要配合return),這可以理解為一個(gè)類變量 public static int add(int a,int b){ return a+b;//將定義的加法,返回到上面調(diào)用它的mian方法中去 } }
下面是返回為空的情況(viod)(注釋很重要):
public class Demo02 { //mian方法 public static void main(String[] args) { test();//將下面自定義的方法調(diào)用,結(jié)果會(huì)輸出1 } //自定義一個(gè)方法test()方法 public static void test(){//void相當(dāng)于返回為空,則不用與return連用, int a=1; System.out.println(a); /* 因?yàn)檫@次的定義的變量在test()方法中, mian方法在調(diào)用時(shí),在mian方法中找不到變量,則返回值為空,用viod。 這樣讓mian方法更簡(jiǎn)潔,能直接調(diào)用test()方法, 返回值為空是,不能用return返回, */ } }
二、方法的定義
- java的方法類似于其他的語(yǔ)言的函數(shù),是一段用來(lái)完成特定功能的代碼片段,一般情況下,定義一個(gè)方法包含以下語(yǔ)法(方法包含一個(gè)方法頭和一個(gè)方法體):
1.修飾符:這是可選的,告訴編譯器如何調(diào)用該方法。定義了該方法的訪問(wèn)類型。
2.返回值類型:方法可能會(huì)返回值。returnValueType是方法返回值的數(shù)據(jù)類型。有些方法執(zhí)行所需的操作,但沒(méi)有返回值,即返回為空。在這種情況下,returnValueType是關(guān)鍵字void。
3.方法名 :是方法的實(shí)際名稱。方法和參數(shù)表共同構(gòu)成方法簽名。
4.參數(shù)類型:參數(shù)像是一個(gè)占位符,當(dāng)方法值給參數(shù)。這個(gè)值被稱為實(shí)參或變量。參數(shù)列表是指方法的參數(shù)類型、順序和參數(shù)個(gè)數(shù)。參數(shù)是可選的,方法不包含任何參數(shù)。
形式參數(shù):在方法被調(diào)用時(shí)用于接受外界輸入數(shù)據(jù)。
實(shí)參:調(diào)用方法是實(shí)際傳給方法的數(shù)據(jù)。
方法體:方法體包含具體的語(yǔ)句,定義該方法的功能。
以上文字結(jié)合下圖思考
結(jié)合上面文字,認(rèn)真分析下邊的代碼:
public class Demo03 { //main方法 public static void main(String[] args) { int max = max(20,20); System.out.println(max); } //自定義一個(gè) 比大小 的方法 public static int max(int num1,int num2){ int reason=0; if (num1==num2){ reason=num1; System.out.print("兩值相等都為" ); return reason;//return除了能返回值,還有終止方法的意思,代碼在運(yùn)行,return后面的語(yǔ)句將不再執(zhí)行 } if (num1>num2){ reason=num1; }else { reason=num2; } return reason; } }
提示:return有終止方法的功能,即在方法中有return成功被執(zhí)行,那么其后面的代碼將不會(huì)運(yùn)行。
三、方法的調(diào)用
- 調(diào)用方法:對(duì)象名.方法名(實(shí)參列表)
- Java支持兩種調(diào)用方法的方式,根據(jù)方法是否返回值來(lái)選擇。
- 當(dāng)方法返回一個(gè)值的時(shí)候,方法調(diào)用通常被當(dāng)做一個(gè)值。例如:
int larger=max(30,40);
- 如果返回值是void,方法調(diào)用一定是一條語(yǔ)句。如:
System.out.println(“hello!”);
四、方法的重載
- 重載就是在一個(gè)類中,有相同的函數(shù)名稱,但形參不同的函數(shù)。
- 方法重載的規(guī)則:
1.方法名稱必須相同。
2.參數(shù)列表必須不同(個(gè)數(shù)不同、或類型不同、參數(shù)排列順序不同等)。
3.方法的返回類型可以相同也可以不相同。
4.僅僅返回類型不同不足以成為方法的重載。
- 實(shí)現(xiàn)理論:
方法名稱相同時(shí),編譯器會(huì)根據(jù)調(diào)用的方法的參數(shù)個(gè)數(shù),參數(shù)類型等去逐個(gè)匹配,以選擇對(duì)應(yīng)的方法,如果匹配失敗,則編譯器報(bào)錯(cuò)。
重載例用如下:
public class Demo05 { public static void main(String[] args) { //調(diào)用int類型的加法 int sum=add(2,3); System.out.println(sum); } //定義一個(gè)double類型的加法 public static double add(double a1,double a2){ double a=a1+a2; return a; } //定義一個(gè)int類型的加法 public static int add(int a1,int a2){ int a=a1+a2; return a; } /* 定義的double類型的加法和int類型的加法 這兩個(gè)方法的參數(shù)類型不同,方法名稱相同. */ }
可變參數(shù)
- 在方法聲明中,在指定參數(shù)類型后加一個(gè)省略號(hào)(…)。如:public void test(int…i)。int…i可以理解為數(shù)組
- 一個(gè)方法中只能指定一個(gè)可變參數(shù),它必須是方法的最后一個(gè)參數(shù)。任何普通的參數(shù)必須在它之前聲明。
public class Demo07 { public static void main(String[] args) { Demo07 demo07=new Demo07(); demo07.test(1,5,565,15,1212); } public void test(int a,int...i){//int...i必須是方法的最后一個(gè)參數(shù) System.out.println(i[0]);//i[0]提取int...i(可以理解為數(shù)組)中第1個(gè)數(shù) System.out.println(i[1]);//提取第2個(gè)數(shù) System.out.println(i[2]); System.out.println(i[3]); System.out.println(i[4]); } }
五、遞歸
- 遞歸就是: A方法調(diào)用A方法!就是自己調(diào)用自己
- 利用遞歸可以用簡(jiǎn)單的程序來(lái)解決一些復(fù)雜的問(wèn)題。 它通常把一個(gè)大型復(fù)雜的問(wèn)題層層轉(zhuǎn)化為一個(gè)與原問(wèn)題相似的規(guī)模較小的問(wèn)題來(lái)求解,遞歸策略只需少量的程序就可描述出解題過(guò)程所需要的多次重復(fù)計(jì)算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語(yǔ)句來(lái)定義對(duì)象的無(wú)限集合。
- 遞歸結(jié)構(gòu)包括兩個(gè)部分:
1.遞歸頭:什么時(shí)候不調(diào)用自身方法。如果沒(méi)有頭,將陷入死循環(huán)。
2.遞歸體:什么時(shí)候需要調(diào)用自身方法。
//遞歸 public class Demo08 { public static void main(String[] args) { int b=f(4); System.out.println(b); } //階層(自己調(diào)用自己) public static int f(int n){ if(n==1){ return 1; }else { return n*f(n-1);//n*(n-1)*(n-1-1)*...*1 } } }
到此這篇關(guān)于java基礎(chǔ)之方法詳解的文章就介紹到這了,更多相關(guān)java方法詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot整合redis過(guò)期key監(jiān)聽(tīng)實(shí)現(xiàn)訂單過(guò)期的項(xiàng)目實(shí)踐
現(xiàn)在各種電商平臺(tái)都有自己的訂單過(guò)期時(shí)間設(shè)置,那么如何設(shè)置訂單時(shí)間過(guò)期呢,本文主要介紹了springboot整合redis過(guò)期key監(jiān)聽(tīng)實(shí)現(xiàn)訂單過(guò)期的項(xiàng)目實(shí)踐,感興趣的可以了解一下2023-12-12Spring中的ThreadPoolTaskExecutor線程池使用詳解
這篇文章主要介紹了Spring中的ThreadPoolTaskExecutor線程池使用詳解,ThreadPoolTaskExecutor 是 Spring框架提供的一個(gè)線程池實(shí)現(xiàn),用于管理和執(zhí)行多線程任務(wù),它是TaskExecutor接口的實(shí)現(xiàn),提供了在 Spring 應(yīng)用程序中創(chuàng)建和配置線程池的便捷方式,需要的朋友可以參考下2024-01-01LIS 最長(zhǎng)遞增子序列 Java的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇LIS 最長(zhǎng)遞增子序列 Java的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09Java中的Map接口實(shí)現(xiàn)類HashMap和LinkedHashMap詳解
這篇文章主要介紹了Java中的Map接口實(shí)現(xiàn)類HashMap和LinkedHashMap詳解,我們常會(huì)看到這樣的一種集合,IP地址與主機(jī)名,等,這種一一對(duì)應(yīng)的關(guān)系,就叫做映射,Java提供了專門的集合類用來(lái)存放這種對(duì)象關(guān)系的對(duì)象,需要的朋友可以參考下2024-01-01JavaWeb搭建網(wǎng)上圖書商城畢業(yè)設(shè)計(jì)
這篇文章主要介紹了JavaWeb搭建網(wǎng)上圖書商城框架,特別適合正在為網(wǎng)上商城畢業(yè)設(shè)計(jì)煩惱的同學(xué),需要的朋友可以參考下2015-11-11金三銀四復(fù)工高頻面試題java算法LeetCode396旋轉(zhuǎn)函數(shù)
這篇文章主要為大家介紹了金三銀四復(fù)工高頻面試題之java算法題解LeetCode396旋轉(zhuǎn)函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Java使用TCP實(shí)現(xiàn)數(shù)據(jù)傳輸實(shí)例詳解
這篇文章主要介紹了Java使用TCP實(shí)現(xiàn)數(shù)據(jù)傳輸實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06java基于Apache FTP實(shí)現(xiàn)文件上傳、下載、修改文件名、刪除
本篇文章主要介紹了Apache FTP實(shí)現(xiàn)文件上傳、下載、修改文件名、刪除,實(shí)現(xiàn)了FTP文件上傳(斷點(diǎn)續(xù)傳)、FTP文件下載、FTP文件重命名、FTP文件刪除等功能,有需要的可以了解一下。2016-11-11