Java筆記--基礎

來源:互聯網
上載者:User

標籤:

1、Java中記憶體的基本結構:

棧(stack):存放局部變數、對象的引用;

堆(heap):new出來的東西(對象)

方法區:常量池等

靜態域:全域變數等

變數在其生命週期結束後將出棧,此時堆中的空間因為沒有棧中的變數來引用它將被系統回收

2、Java中關於變數的類型:1)按照資料類型的不同:基礎資料型別 (Elementary Data Type) & 引用資料類型

              2)按照聲明位置的不同:成員變數 & 局部變數

3、成員變數與局部變數的區別:

--聲明位置不同;

--成員變數的修飾符:public、private、protected、預設

  局部變數沒有修飾符(與所在方法修飾符相同);

--局部變數必須要初始化後才能使用(無預設值)

  成員變數若不初始化,則根據變數類型賦預設值;

--局部變數在記憶體中存在於棧空間中

  成員變數存在於堆空間內(成員變數所在類的引用則存在於棧空間);

4、可變個數的形參

--舉例:

1 public void print(String ... args){2     for(int i = 0; i < args.length; i++){3         System.out.println(args[i]);4     }5 }

註:若方法中存在可變個數的形參,則必須將其聲明在所有參數的最後;也就是說一個方法只能聲明一個可變個數的形參。

個人理解:這個可變個數的參數與數組使用一致,因此在調用方法的時候也可以直接傳入一個數組。

5、參數傳遞的機制:Java中的參數傳遞均為值傳遞。

個人理解:不管傳遞是的基礎資料型別 (Elementary Data Type)還是引用資料類型,調用方法時均將實參的值傳遞給形參,而不是將實參直接傳遞到方法中。

6、修飾類的的修飾符只有public或者預設。

 7、關於this關鍵字:注意1)this()必須寫在構造器第一行;2)至少又一個構造器不使用this();

8、JavaBean:1)類型是公用的

        2)有一個無參的公用的構造器

        3)有屬性,且有對應的get、set方法。

9、package:聲明源檔案所在包,寫在程式的第一行。

10、import static ...:匯入制定類的static的屬性或方法。

11、Java只支援單繼承。

12、多態性的前提:1)存在繼承關係;2)子類中必須有對父類方法的重寫。

個人理解:執行個體化父類的對象時,若new出來的是其子類,則只能調用子類中重寫的方法而不能調用子類中其他方法。

13、對象a instanceof 類A 判斷對象a是否是類A的一個執行個體,若是返回true,反之返回false。

註:若果為true,則對象a一定是A類的父類的執行個體。

14、子類對象的多態性不適用於屬性,不適用於方法。

15、對於每一個基礎資料型別 (Elementary Data Type),都有一個與其對應的封裝類,由於在JDK5.0之後添加了裝箱拆箱的特性,所以無需再通過封裝類的各種方法來實現與基礎資料型別 (Elementary Data Type)的轉換。

當讓也可以使用方法來轉換(如Integer integer = new Integer(5)、int i = integer.intValue().)。

16、static可以用來修飾屬性、方法、代碼塊(或初始化塊)、內部類。

17、static修飾的屬性成為類變數,它不依賴於對象而存在,隨著類的載入而載入(靜態方法也如此)。與之對應的是執行個體變數,它只有在對象被建立之後才存在。

18、在靜態方法內能夠使用本類靜態屬性或方法,但不能調用非靜態屬性或方法。反之,非靜態屬性或方法可以調用靜態屬性或方法。

個人理解:靜態屬性或方法在類被載入時就被建立,而非靜態屬性或方法只有在類執行個體化對象後才被建立。而且靜態屬性或方法的生命週期也比非靜態長。

19、類的五個成員:屬性,方法,構造器,代碼塊,內部類。

20、關於屬性賦值的操作:1)預設初始化;2)顯示初始化或代碼塊初始化(按順序執行);3)構造器賦值;4)方法賦值。

21、final標記的類不能被繼承;fianl標記的方法不能被子類重寫;final標記的屬性只能被初始化一次,此屬性為一個常量,通常用大寫字母命名。

常量不能使用預設初始化,可以顯示的賦值,或在代碼塊、構造器中賦值。static final修飾的變數為全域常量。

22、抽象類別:1)不能被執行個體化;2)有構造器,可供子類使用。3)抽象方法所在的類一定是抽象類別。

一個類若繼承於抽象類別,則必須重寫抽象類別中的抽象方法。

23、通過多態性來建立的抽象類別執行個體只能調用子類重寫過的方法。

24、介面是抽象方法和常量值的定義的集合;介面是一種特俗的抽象類別,只包含常量和方法的定義,而沒有變數和方法的實現。

--一個類可以實現多個介面(因為Java是單繼承的,所以介面可以實現多重繼承的效果)。

--介面定義的是一種功能,此功能可以被所有類實現。

--介面沒有構造器,所以不能執行個體化介面。

--介面可以繼承其他介面,而且可以實現多繼承。

25、介面與具體的實作類別也存在多態性。

26、介面可以實現匿名類對象。例:OnClickListener ocl = new OnClickListener(){

                  void onClick(View v){}

                };

27、介面總結:1)通過介面可以實現不相關類的相同行為,而不需要考慮這些類之間的層次關係;

        2)通過介面可以指明多個類需要實現的方法,一般用於定義對象的擴張功能;

       3)介面主要用來定義規範。接觸耦合關係。

 28、內部類:

--分類:1)成員內部類(方法外);2)局部內部類(方法裡)。

--內部類是外部類的一個成員,有修飾符(4個),可以用static final修飾,可以使用外部類的屬性和方法。

--非靜態類的內部類的執行個體化:先執行個體化一個外部類對象,再通過該對象調用內部類的構造器來執行個體化內部類。

 

Java筆記--基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.