1. 類修飾符:public, final,abstract,類名每個單詞的首字母大寫
2. 成員變量的修飾符: public, protected, private, static, final (前三個修飾符只能出現其中之一),在定義成員變量的同時可以有默認值,成員變量名通常第一單詞首字母小寫,後面每個單詞的首字母大寫
3. 方法的修飾符:public ,protected,private,static,final,abstract(前三個修飾符只能出現其中之一,final和abstract只能出現其中之一),方法名通常用動詞開頭,比如doSomething
4. 構造器的修飾符:public ,private,protected(三者只能出現其一),構造器不能定義返回值類型,如果你使用了返回值類型,那麼這就不再是構造器方法,而是普通的方法。
科普:其實構造器是有返回值的,他返回的是該類的實例,但是不要在構造器裏顯示地使用return來返回當前類的對象,構造器的返回值是隱式的。
-----------------------------------------------------------------------------------------------------------------
5. 對象的this引用
兩層含義:
構造器——代表該構造器正在初始化的對象
方法中——代表正在調用該方法的對象
Person p=new Person();//產生了兩個東西,一個是p引用變量,一個是Person對象
科普:
- 調用static修飾的成員時,如果省略了主調,默認使用該類作爲主調,static修飾的方法中不能使用this引用
- 調用非static修飾的成員時,如果省略了主調,默認是this
- 當方法中出現和成員變量同名的局部變量時,則必須使用this作爲前綴纔可以訪問方法的成員變量
-----------------------------------------------------------------------------------------------------------------
6.方法的參數傳遞機制:Java裏面都是值傳遞。swap實例的內存圖,詳細看書。
7.形參個數可變的方法:處理上當初數組進行處理
比較:public static void test(String... books);//test("a","b")或者test(new String[]{"a","b"})都是可以的
public static void test (String[] books);//test(new String[]{"a","b"})
- 個數可變的形參只能處於形參列表的最後,一個方法當中最多只能有一個個數可變的形參
-----------------------------------------------------------------------------------------------------------------
8.方法的重載:只表現在參數上
注意:不推薦重載形參個數可變的方法
例1:
public void test(String msg);//(1)
public void test(String... msg);//(2)
對於這樣的幾種調用:
test()//調用法2
test("a","b")//2
test("a")//1
test(new String[]{"a"})//2
例2:爲什麼不可以用返回值來重載
public int f();
public void f();
對於int res=f()可以知道調用的是第一個,但是對於f()就不知道具體應該調用哪一個了