1. 程式人生 > >java方法過載

java方法過載

方法的優點就是可以提高程式碼的複用性。以後要有編寫方法的意識,不要把所有程式碼都堆積在main方法中。什麼時候需要定義方法?當希望提高某段程式碼複用性的時候可以去定義一個方法。

注意:

  1. 方法體中不能定義方法,只能在類體中定義方法。
  2. 上面程式碼中的(int a , int b)叫做形式引數列表,簡稱形參,呼叫sumInt方法時傳入的(10 , 15)叫做實際引數列表,簡稱:實參。java語言中有規定,實參和形參在資料型別上要對應相同,並且在數量上要相同。
  3. 形參就是區域性變數,變數名的命名可以隨意命名,最好是見名知意

區域性變數和成員變數 變數根據宣告的位置分為:

  • 區域性變數:在方法體當中宣告的變數
  • 成員變數:在方法體之外宣告的變數

 方法的定義:

 修飾符 返回值型別 方法名(引數型別 引數名1,引數型別 引數名2...) {
        方法體語句;
        //如果方法沒有返回值的話就不需要return了。
        return 返回值; 
    } 

 不同類間的方法呼叫,類名.方法名

  • 修飾符:暫時先寫 public static。後面再詳細的講解其他的修飾符和作用。
  • 返回值型別:可以是java語言中的任何一種資料型別(基本資料型別和引用資料型別)。如果方法執行結束後,沒有任何返回值,返回值型別填寫void,即表示沒有返回值。
  • 方法名:自己定義,只要符合命名規則即可,使用駝峰方式命名,即第一個單詞首字母小寫,後面單詞的首字母大寫,例如sumInt。
  • 引數:

    沒有引數:如果沒有引數,引數型別和引數名可以不寫,()裡面空著就行

    有引數:可以有一個,或多個引數,多個引數用”,”隔開
  • 引數型別:就是引數的資料型別,基本資料型別和引用資料型別都可以
  • 引數名:就是變數名,符合命名規則即可
  • 方法體語句:就是完成功能的程式碼。
  • return:如果方法的返回值型別不是void,那麼在方法體中必須使用return 語句來返回資料。return語句一旦執行,則方法結束,因此在方法中return後面的程式碼是不會執行的。
  • 返回值:方法執行的結果,將結果返回給呼叫者。
public class testoverload {
	public static void main(String[] args) {
		int c=sum(10,5);
		System.out.println(c);
		float d=method1.sumfloat(1.0f, 2.4f);
		System.out.println(d);
	}
	
	public static int sum(int a,int b) {
		int c=a+b;
		return c;
	}
	
}
class method1{
	public static float sumfloat(float a,float b) {
		float c=a+b;
		return c;
	}
}

 方法的執行順序 main方法是程式的入口,程式是從main方法裡面開始自上而下執行的。如果定義了一個方法,這個方法並未在直接或間接在main方法裡面進行呼叫,那麼這個方法將不會被執行。

方法可以定義再main方法之前或者之後都可以,方法之間不能互相呼叫,會陷入死迴圈。

public class testoverload {
	public static void main(String[] args) {
		int c=sum(10,5);
		mutiply();
		add();
		sub();	
	//	method1();
	}
	
	public static int sum(int a,int b) {
		int c=a+b;
		return c;
	}
	public static void mutiply() {}
	public static void add() {}
	public static void sub() {}
        public static void decs(){}
 	/* //方法之間不能互相呼叫,否則陷入死迴圈
	public static void method1() {
		method2();
		}
	public static void method2() {
		method1();
	}
	*/
	}

return關鍵字

方法定義的時候帶返回值型別,方法中一定要有返回值,如果省略後面的return false,編譯器會考慮到i<=0的情況,可能會沒有返回值,會報錯

public class testoverload {
	public static void main(String[] args) {
		iftrue(8);
	}
	public static boolean iftrue(int i) {
		if(i>0) {
			return true;
		}
		return false;//沒有這行return false,可能會沒有返回值,會報錯
	}
	
}

break,continue和return的區別

break; 和 continue; 這兩個語句主要是用來控制迴圈的,跟方法沒有關係。

return; 和以上的兩個語句不是一個級別的,return;是用來終止當前方法的。

 方法過載

方法過載發生的條件

  • 發生在同一個類中.
  • 方法名相同
  • 引數列表不同(型別,個數,順序)

注意:

  • 方法過載和返回值型別無關
  • 方法過載和方法的修飾符列表無關。
public class testoverload {
	public static void main(String[] args) {
		
	}
	//引數的型別不同,構成引數的過載
	public static void method1(float i) {}
	public static void method1(int i) {}
	//引數的個數不同,構成方法過載
	public static void method2(int i,int j) {}
	public static void method2(int i) {}
	//引數的順序不同,構成方法過載,但不這樣使用
	public static void method3(int i,long j) {}
	public static void method3(long j,int i) {}
	/*
	 * 方法的返回值型別不同,不構成過載,報錯
	public static void method4() {}
	public static int method4() {
		return 1;
	}
	*方法的修飾符不同,不構成過載,報錯
	public static void method5() {}
	private static void method5() {}
	*/
}

 原文: