Java基礎(chǔ)精講方法的使用
一、方法
方法是什么?
在Java中方法就相當(dāng)于C語(yǔ)言中的函數(shù)。因?yàn)橛袝r(shí)候我們需要一塊代碼重復(fù)使用,這時(shí)候就可以使用方法。
為什么要用方法?
1. 是能夠模塊化的組織代碼 ( 當(dāng)代碼規(guī)模比較復(fù)雜的時(shí)候 ).
2. 做到代碼被重復(fù)使用 , 一份代碼可以在多個(gè)位置使用 .
3. 讓代碼更好理解更簡(jiǎn)單 .
4. 直接調(diào)用現(xiàn)有方法開(kāi)發(fā) , 不必重復(fù)造輪子
方法的基本語(yǔ)法格式:
public static 返回類(lèi)型 方法名稱(chēng)(形參列表){}
在這里要注意形參是實(shí)參的一份臨時(shí)拷貝,形參并不能改變實(shí)參?。。?/p>
來(lái)看個(gè)例子:
public class TestModer {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("交換前"+"a = " + a + " b = " + b);
swap(a, b);
System.out.println("交換后"+"a = " + a + " b = " + b);
}
public static void swap(int x, int y) {
int tmp = x;
x = y;
y = tmp;
}
}我們可以看看運(yùn)行結(jié)果:


我們可以看到這里是傳值調(diào)用,所以改變形參并不能改變實(shí)參。還有需要注意的就是在C語(yǔ)言中,被調(diào)用的函數(shù)需要放在調(diào)用函數(shù)前面,在Java中,方法的位置可以放前面也可以放后面,因?yàn)樵贘ava中是從主函數(shù)開(kāi)始執(zhí)行的。
二、方法的重載
方法的重載是什么意思呢?我們通過(guò)一個(gè)例子來(lái)了解:
public class TestModer {
public static void main(String[] args) {
int a = 10;
int b = 20;
int ret = add(a, b);
System.out.println("ret = " + ret);
double a2 = 10.5;
double b2 = 20.5;
double ret2 = add(a2, b2);
System.out.println("ret2 = " + ret2);
double a3 = 10.5;
double b3 = 10.5;
double c3 = 20.5;
double ret3 = add(a3, b3, c3);
System.out.println("ret3 = " + ret3);
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
public static double add(double x, double y, double z) {
return x + y + z;
}
}在這里我們可以看到結(jié)果:

我們可以看看這三個(gè)方法,分別代表了兩個(gè)整數(shù)的加法,兩個(gè)浮點(diǎn)數(shù)的加法,三個(gè)浮點(diǎn)數(shù)的加法。這三個(gè)方法的方法名字都相同,第一個(gè)方法和第二個(gè)方法參數(shù)個(gè)數(shù)相同,第二個(gè)方法和第三個(gè)方法參數(shù)類(lèi)型相同。

在C語(yǔ)言中同一個(gè)工程中每個(gè)函數(shù)函數(shù)名不能相同,但是Java中這里可以,同一個(gè)方法名字, 提供不同版本的實(shí)現(xiàn), 稱(chēng)為 方法重載。
重載需要滿足的條件:
1、方法名相同 。
2、方法的參數(shù)不同 ( 參數(shù)個(gè)數(shù)或者參數(shù)類(lèi)型 ) 。
3、方法的返回值類(lèi)型不做要求。
三、方法遞歸
遞歸是什么?
一個(gè)方法在執(zhí)行過(guò)程中調(diào)用自身 , 就稱(chēng)為 " 遞歸 "。
注意:
1、遞歸需要有個(gè)趨近于終止的條件,否則會(huì)無(wú)限循環(huán)。
2、每次執(zhí)行會(huì)越來(lái)越接近這個(gè)條件。
遞歸執(zhí)行過(guò)程是什么樣的呢?來(lái)看看幾個(gè)例題:
//輸出一個(gè)整數(shù)的每一位,如:123的每一位是1 ,2 ,3
public class TestModer {
public static void print(int n) {
if (n < 10) {
System.out.print(n + " ");
} else {
print(n / 10);
System.out.print(n % 10 + " ");
}
}
public static void main5(String[] args) {
int num = 123;
print(num);
}
}
我們可以看到方法print自己調(diào)用自己的過(guò)程,每次執(zhí)行時(shí),n都越來(lái)越接近終止條件,這就是遞歸的一個(gè)過(guò)程。
//求斐波那契數(shù)列的第3項(xiàng)。(遞歸實(shí)現(xiàn))
public class TestModer {
public static int fib(int num) {
if(num==1||num==2){
return 1;
}
else{
return fib(num-1)+fib(num-2);
}
}
public static void main(String[] args) {
int n=3;
int x=fib(n);
System.out.println(x);
}
}
四、小結(jié)
以上就是方法的一些使用,其中遞歸是一種重要的編程解決問(wèn)題的方式,有些問(wèn)題天然就是使用遞歸方式定義的(例如斐波那契數(shù)列, 二叉樹(shù)等), 此時(shí)使用遞歸來(lái)解就很容易,有些問(wèn)題使用遞歸和使用非遞歸(循環(huán))都可以解決,那么此時(shí)更推薦使用循環(huán), 相比于遞歸, 非遞歸程序更加高效。
到此這篇關(guān)于Java基礎(chǔ)精講方法的使用的文章就介紹到這了,更多相關(guān)Java方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
idea中springboot整合mybatis找不到mapper接口的原因分析
這篇文章主要介紹了idea中springboot整合mybatis找不到mapper接口的原因分析及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Java你不了解的大數(shù)型BigInteger與BigDecimal類(lèi)
這篇文章主要介紹了Java 處理超大數(shù)類(lèi)型之BigInteger與BigDecimal案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2022-05-05
javaweb中Filter(過(guò)濾器)的常見(jiàn)應(yīng)用
這篇文章主要介紹了javaweb中Filter的常見(jiàn)應(yīng)用,過(guò)濾器的使用方法,感興趣的小伙伴們可以參考一下2015-12-12
SpringBoot如何實(shí)現(xiàn)一個(gè)Redis限流注解
這篇文章主要介紹了利用SpringBoot實(shí)現(xiàn)一個(gè)Redis限流注解方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
Java默認(rèn)傳入時(shí)間段時(shí)間的實(shí)例
下面小編就為大家?guī)?lái)一篇Java默認(rèn)傳入時(shí)間段時(shí)間的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
SpringBoot對(duì)PDF進(jìn)行模板內(nèi)容填充與電子簽名合并詳解
這篇文章主要為大家詳細(xì)介紹了SpringBoot對(duì)PDF進(jìn)行模板內(nèi)容填充與電子簽名合并的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考下2023-12-12
Spring Cloud Feign實(shí)現(xiàn)動(dòng)態(tài)URL
本文主要介紹了Spring Cloud Feign實(shí)現(xiàn)動(dòng)態(tài)URL,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Spring Cloud中使用Eureka的詳細(xì)過(guò)程
Eureka 是 Netflix 開(kāi)源的一個(gè)服務(wù)發(fā)現(xiàn)組件,它在微服務(wù)架構(gòu)中扮演著重要的角色,這篇文章主要介紹了Spring Cloud中如何使用Eureka,需要的朋友可以參考下2024-07-07
SpringBoot通過(guò)Nginx代理獲取真實(shí)IP
springboot作為后臺(tái)代碼,獲取到的登錄IP是前臺(tái)的代理服務(wù)器地址,并不是用戶的真實(shí)IP地址,本文主要介紹了SpringBoot通過(guò)Nginx代理獲取真實(shí)IP,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01

