java方法
1. java中方法不能單獨存在,所有方法必須定義在類中.
2. 從邏輯上說,一個方法要么屬于一個對象,要么屬于一個類(使用static修改的方法)
3. 永遠(yuǎn)不可能獨立執(zhí)行方法,執(zhí)行方法必須使用類或?qū)ο笞鳛檎{(diào)用者.包括隱式的this對象
1. 常用的修飾符:
static 可用于修飾方法,屬性等成員.修飾成員表示這個成員是屬于這個類所共有的,而不是屬于這個類的某一個實例.不使用static的成員則表示,這些成員是屬于該類的某一個實例,而不是屬于這個類.靜態(tài)成員不能訪問非靜態(tài)成員.
2. 方法的參數(shù)傳遞機(jī)制
java方法的參數(shù)傳遞機(jī)制:值傳遞.所謂值傳遞,就是將實際參數(shù)的副本傳入方法內(nèi),而參數(shù)本身不受任何影響.
基本數(shù)據(jù)類型和引用類型都是采用值傳遞的方式進(jìn)行.但如果傳遞的是引用類型,雖然傳入方法內(nèi)的是引用類型變量的一個副本,但兩個引用類型變量都是指向了同一個堆內(nèi)存中的對象,通過任何一個引用變量對對象進(jìn)行操作,都會對這個對象產(chǎn)生影響.
public class Test {
//基本數(shù)據(jù)類型的值傳遞
private static void swap(int a ,int b) {
int tmp = a;
a = b;
b = tmp;
System.out.println("swap()方法中:a="+a+",b="+b);
}
// 引用類型的值傳遞
private static void swap2(Obj o) {
int tmp = o.a;
o.a = o.b;
o.b = tmp;
System.out.println("swap2()方法中:a="+o.a+",b="+o.b);
}
public static void main(String[] args) {
int a = 10;
int b = 20;
swap(a,b);
System.out.println("swap()方法外:a="+a+",b="+b);
Obj o = new Obj();
swap2(o);
System.out.println("swap2()方法中:a="+o.a+",b="+o.b);
}
}
3. 形參長度可變的方法
長度可變的形參只能位于形參隊列的最后,一個方法中只能出現(xiàn)一個長度可變的形參.這個長度可變的形參可以傳入多個參數(shù),也可以傳入一個數(shù)組
public class Test3 {
public String test(String... Strs) {
String result = "";
for (String tmp : Strs) {
result += tmp;
}
return result;
}
public static void main(String[] args) {
Test3 t = new Test3();
System.out.println(t.test("Hello","!","world"));//可以傳入多個String
String[] tmp = {"Hello","!","world"};
System.out.println(t.test(tmp));//也可以傳入一個String數(shù)組
}
}
4. 方法重載
1. 出現(xiàn)在同一個類中
2. 方法名相同,方法的形參列表不同
3. 方法的其他屬性如返回值類型,修飾符等與方法重載無關(guān)
5. 方法重寫
1. 出現(xiàn)在繼承中,子類和父類同名的方法之間
2. 方法名,方法形參列表相同;返回值類型,子類比父類更小或相等;拋出的異常,子類比父類更小或相等;訪問權(quán)限,子類比父類更大或相等;二者必須同時為實例方法,或同時為類方法
3. 私有的父類方法,是不能被重寫的
6. 構(gòu)造器
1. 每個java類都至少有一個構(gòu)造器,如果沒有顯式的提供,系統(tǒng)會提供一個無參數(shù)的執(zhí)行體為空的構(gòu)造器
2. 構(gòu)造器可以重載,每個不同的構(gòu)造器之間可使用this相互調(diào)用,且只能在第一行調(diào)用