1. 程式人生 > >java基礎部分複習01

java基礎部分複習01

一 java是什麼

  跨平臺的、面向物件的、程式設計語言。具有通用性、高效性、平臺移植性、安全性。(具體為什麼在後面複習中體現)

1.面向物件的理解:

   概念:一切皆物件。

   將物件的屬性和操作物件屬性的方法作為一個整體,即物件

   將物件的共性抽象成類。

   理解:一切有共性的事物,將他們的共有屬性歸為一類,該類的具體實現即為物件

   如:小明,小紅,小白,共有屬性為姓名,班級,年齡,將他們歸為學生類。他們每個人都是該學生類的具體實現(物件)

2.面向物件的三個特徵:封裝、繼承、多型。

封裝:

   概念:隱藏物件的屬性和實現細節,僅對外提供公共訪問方式

               1.物件的屬性和行為看成一個密不可分的整體,將這兩者“封裝”在一個不可分割的獨立單位

               2.資訊隱藏。資料被保護在抽象資料型別的內部,儘可能地隱藏內部的細節,只
保留一些對外介面使之與外部發生聯絡

    理解:如同一個機器,使用者不需要知道機器內部運轉過程,只需要知道該機器具有那些功能,按下什麼鍵可以啟動。

                對於程式碼來說,顯而易見的提高了重用性和安全性(使用者無法訪問實現細節,也就無從修改。)

繼承

    概念:從已有的類中派生出新的類,新的類能吸收已有類的資料屬性和行為,並能擴充套件新的能力  

    理解:實現程式碼複用,並服務於多型。

                如:動物類、食肉動物類、食草動物類,後倆者可以繼承動物類的程式碼,並在此基礎上描述新特性,實現了程式碼的複用                    (而不用重複描寫動物類特性的程式碼) 

多型

概念:允許不同類的物件對同一訊息做出響應。即同一訊息可以根據傳送物件的不同而採用多種不同的行為方式   

     理解:在父類引用指向子類物件的基礎上,只有在執行的時候才會知道引用變數所指向的具體例項物件 (自動向上造型)

                如父類A 父類A的三個引用  b c d分別指向子類B C D 呼叫方法時會自動呼叫子類的對應方法(前提是父類裡要有)

     為什麼要使用多型:降低程式碼耦合性。便於程式碼維護和功能拓展

      簡單總結:不使用多型的話,多個強耦合的類都要各自宣告定義,每多一個新的,就要修改大量程式碼

                         (不用多型的話每次功能改動需要修改的程式碼太多。)

2. java編譯執行過程簡單複習

    過程:.java檔案(原始檔)->(javac命令,編譯)->.class檔案(位元組碼檔案)->(java命令,執行)

    編譯通過編譯器實現,執行通過JVM的classload功能實現。(因此執行一個java檔案所需最小環境為JRE:JVM+java系統類            庫)

     IDE:整合開發環境 如eclipse

3.JVM簡單理解複習

   JVM三個執行資料區:棧、堆、方法區

   中存有引用型別變數與基本資料型別。每個變數分配一個棧幀作為儲存空間

   引用型別變數存的是地址資訊,指向堆中的例項化物件。

   基本資料型別的變數名和值一同存在棧幀中。

   中存的是例項化的物件,其中沒有引用指向的例項化物件會被GC自動回收。

   方法區中存的是class檔案資訊和常量(在方法區中的常量池裡),涉及到class檔案資訊、class檔案常量池、執行時常量池等

    需要時再進一步理解。總之class檔案載入後文件資訊存在方法區裡。

4.其他

    位元組與位:一個位元組等於八位二進位制 00000000

    8種資料型別:boolean 1 byte 1short 2  char 2 int 4 float 4long 8 double 8 一個位元組八位,char 倆個位元組16位 0-65535 很好理            解。(倆個1倆個2倆個4倆個8)

     ++ -- 運算:i=0;int i=i++;syso(i)結果為0,因為:i在前,先賦值再自增,i在後,先自增後賦值 (相當於執行倆串程式碼)

     邏輯:&和&&:前者倆邊都會判斷是否為true/false  後者會先判斷前面的,若位false,則沒必要判斷後面的 (短路與的含義)

     break和continue問題:break:當前迴圈結束。(巢狀迴圈中,只跳出一層。) continue:跳出本次迴圈,執行下一次迴圈            (本次迴圈中continue下面的程式碼都不執行)。對比:對於無巢狀迴圈break針對整個迴圈,continue針對迴圈中某個程式碼塊。

    if省略大括號的作用域問題:if後如果省略{},那麼if只作用於其後面的第一行程式碼。此時如果這行程式碼是變數宣告語句,則會報錯,因為這行語句相當於沒有作用域是一條廢語句(如果有大括號,作用域就是大括號內),java不允許該廢語句。

    getinstance和instanceof方法:A.getInstance() 方法 A是類名,此方法主要用於單例模式,呼叫後,若系統中已有例項化的A對       象,則得到該物件,若沒有,則在堆中新例項化該物件(通過呼叫該類的函式)。 a instanceof A方法:檢查a是否A類,返回       ture/false

    重寫和過載:重寫:針對父子類的同一方法,(除了方法體,其他全部相同),過載:針對同一個類的方法名相同引數列表不       同的方法(動態繫結)。

    static 靜態塊和static變數的宣告:先進行static屬性宣告再執行靜態塊內容。

以上即本人從初學者角度總結的一些常識性的知識點快速複習,和個人理解。有些雜亂,後面有時間再疏理補充