Java 方法的定義和使用


Java 方法的定義和使用

方法的最大好處是可以進行重復調用,但是至於說那些操作要形成方法,這些都要根據你的實際項目經驗而自我總結的。 ##方法的基本定義 限制條件:在主類中定義,並且由主方法直接調用的方法形式。 方法就是一段可以被重復調用的方法塊。在Java中要想進行方法的定義,則可以使用如下的語法完成。

public static 返回類型 方法名稱([參數類型 變量, ......]) {
方法體代碼;
[return [返回值];]
}
1234

在定義方法的時候對於方法的返回值有以下的兩類:

  • void:沒有返回值;

  • 數據類型(基本類型,引用類型)。

示范: 定義一個沒有返回值,沒有參數的方法

public class TestDemo {
public static void main(String[] args) {
print(); //主方法里面直接調用方法
}
public static void print() {
System.out.println("Hello World!"); //定義方法
}
}
12345678

示例: 定義一個有參數無返回值的方法

public class TestDemo {
public static void main(String[] args) {
print("Hello"); //主方法里面直接調用方法
print(" world");
print("!");
}
public static void print(String msg) { //定義方法
System.out.print(msg);
}
}
12345678910

示例: 有參數有返回值的方法

public class TestDemo {
public static void main(String[] args) {
int result = add(10, 20);
System.out.println(result);
//既然方法有返回值,那么這些返回值也可以直接輸出
System.out.println(add(100, 200));
}
public static int add(int x, int y) { //定義方法
return x + y;
}
}
1234567891011

但是在定義方法的時候有一點特別要注意,如果某一個方法上使用了void定義,那么該方法可以直接用return來結束調用。一般而言,這種return的處理往往需要結合if判斷來實現。

public class TestDemo {
public static void main(String[] args) {
print(10);
print(20);
}
public static void print(int x) { //定義方法
if(x == 20) //表示的是方法結束的判斷
return; //此語句之后的代碼不再執行
System.out.println("x = " + x);
}
}
1234567891011

對於第一次接觸方法的人來講,先將語法記住,至於怎么用,需要時間來消化。 ##方法重載(重點) 方法重載指的是:方法名稱相同,參數的類型和個數不同。

示例: 實現方法重載

public class TestDemo {
public static void main(String[] args) {
//此時將根據參數的類型和個數的不同執行不同的方法體
System.out.println(add(10, 20));
System.out.println(add(30, 40, 50));
System.out.println(add(1.1, 2.1));
}
public static int add(int x, int y) {
return x + y;
}
//此時方法名稱相同,參數的個數不同
public static int add(int x, int y, int z) {
return x + y + z;
}
public static double add(double x, double y) {
return x + y;
}
}
123456789101112131415161718

在進行方法重載的時候有一個重要的原則:要求方法的返回值類型一定要相同。

示例: 觀察如下程序

public class TestDemo {
public static void main(String[] args) {
//此時將根據參數的類型和個數的不同執行不同的方法體
System.out.println("hello");   //輸出字符串
System.out.println(1); //輸出整形
System.out.println(1.1); //輸出浮點型
System.out.println('A'); //輸出字符
System.out.println(true); //輸出布爾
}
}
12345678910

證明:System.out.println()是一個被重載的方法

方法遞歸調用

方法的遞歸調用指的是一個方法自己調用自己的形式。一般如果要進行方法的遞歸操作往往都具備有以下的特點:

  • 方法必須有一個遞歸的結束條件;

  • 方法在每次遞歸處理的時候一定要做出一些變更;

示例: 實現1 ~ 100的累加操作

public class TestDemo {
public static void main(String[] args) {
System.out.println(sum(100));
}
public static int sum(int num) {
if(num == 1)
return  1;
return num + sum(--num);
}
}
12345678910
  1. [main()調用] 第1次執行sum()方法 return 100 + sum(99);

  2. [sum()遞歸] 第2次執行sum()方法 return 99 + sum(98);

  3. [sum()遞歸] 第3次執行sum()方法 return 98 + sum(97);

  4. [sum()遞歸] 倒數第2次執行sum()方法 return 2 + sum(1);

  5. [sum()遞歸] 倒數第1次執行sum()方法 return 1;

示例: 實現60!,這個結果太大,應該使用double。

public class TestDemo {
public static void main(String[] args) {
System.out.println(mul(60));
}
public static double mul(int num) {
if(num == 1)
return  1;
return num * mul(--num);
}
}
12345678910

通過代碼可以發現使用while循環的操作其實大部分都可以更換為遞歸,之所以使用遞歸主要是一個方法可以執行的操作很多,而且結構要好。

階乘使用遞歸方法

package methods;

public class digui {

public static void main(String[] args) {
// TODO Auto-generated method stub
//5! = 5*4*3*2*1
//4! = 4*3*2*1
//3! = 3*2*1
//2! = 2*1
//1! = 1

System.out.println(f(5));
}
public static int f(int n){
if(n==1){
return 1;
}else{
return n*f(n-1);
}
}
}

注意點:

遞歸好處:代碼更簡潔清晰,可讀性更好!

但是

遞歸壞處:由於遞歸需要系統堆棧,所以空間消耗要比非遞歸代碼要大很多。而且,如果遞歸深度太大,可能系統撐不住。 個人覺得:非必要時不遞歸 遞歸方法只能處理一些數據量較小的問題!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM