1.面向對象具備三大特徵:封裝性、繼承性和多態性,而面向過程沒有繼承性和多態性,而且面向過程的封裝只是封裝功能,而面向對象能夠封裝數據和功能。因此面向對象優點更明顯。java
2.一個經典的比喻:面向對象是蓋澆飯、面向過程是蛋炒飯。蓋澆飯的好處就是「菜」「飯」分離,從而提升了製做蓋澆飯的靈活性。飯不滿意就換飯,菜不滿意換菜。用軟件工程的專業術語就是「可維護性」比較好,「飯」 和「菜」的耦合度比較低。程序員
3.類的定義數組
// 每個源文件必須有且只有一個public class,而且類名和文件名保持一致! public class Car { } class Tyre { // 一個Java文件能夠同時定義多個class } class Engine { } class Seat { }
4.屬性用於定義該類或該類對象包含的數據或者說靜態特徵。屬性做用範圍是整個類體。在定義成員變量時能夠對其初始化,若是不對其初始化,Java使用默認的值對其初始化。網絡
成員變量的默認值 | |
---|---|
數據類型 | 默認值 |
整型 | 0 |
浮點型 | 0.0 |
字符型 | '\u0000' |
布爾型 | false |
全部引用類型 | null |
5.方法用於定義該類或該類實例的行爲特徵和功能實現。方法是類和對象行爲特徵的抽象。方法很相似於面向過程當中的函數。面向過程當中,函數是最基本單位,整個程序由一個個函數調用組成。面向對象中,整個程序的基本單位是類,方法是從屬於類和對象的。函數
方法定義格式: 工具
[修飾符] 方法返回值類型 方法名(形參列表) {`` ``// n條語句``} //例如 public void carinfo(){ System.out.println("輸出汽車的信息") }
6.JVM的內存分析學習
Java虛擬機的內存能夠分爲三個區域:棧stack、堆heap、方法區method area。this
棧的特色以下:.net
棧描述的是方法執行的內存模型。每一個方法被調用都會建立一個棧幀(存儲局部變量、操做數、方法出口等)線程
棧是由系統自動分配,速度快!棧是一個連續的內存空間!
堆的特色以下:
方法區(又叫靜態區)特色以下:
7.構造器也叫構造方法(constructor),用於對象的初始化。構造器是一個建立對象時被自動調用的特殊方法,目的是對象的初始化。構造器的名稱應與類的名稱一致。Java經過new關鍵字來調用構造器,從而返回該類的實例,是一種特殊的方法。
8.Java引入了垃圾回收機制,令C++程序員最頭疼的內存管理問題迎刃而解。Java程序員能夠將更多的精力放到業務邏輯上而不是內存管理工做上,大大的提升了開發效率。
9.對象建立的過程和this的本質
構造方法是建立Java對象的重要途徑,經過new關鍵字調用構造器時,構造器也確實返回該類的對象,但這個對象並非徹底由構造器負責建立。建立一個對象分爲以下四步:
因此,this的本質就是「建立好的對象的地址」! 因爲在構造方法調用前,對象已經建立。所以,在構造方法中也可使用this表明「當前對象」 。
this注意事項:
10.在類中,用static聲明的成員變量爲靜態成員變量,也稱爲類變量。 類變量的生命週期和類相同,在整個應用程序執行期間都有效。它有以下特色:
核心要點:
static修飾的成員變量和方法,從屬於類。
普通變量和方法從屬於對象的。
11.構造方法用於對象的初始化!靜態初始化塊,用於類的初始化操做!在靜態初始化塊中不能直接訪問非static成員。
靜態初始化塊執行順序:
12.Java中,方法中全部參數都是「值傳遞」,也就是「傳遞的是值的副本」。 也就是說,咱們獲得的是「原參數的複印件,而不是原件」。所以,複印件改變不會影響原件。
· 基本數據類型參數的傳值
傳遞的是值的副本。 副本改變不會影響原件。
· 引用類型參數的傳值
傳遞的是值的副本。可是引用類型指的是「對象的地址」。所以,副本和原參數都指向了同一個「地址」,改變「副本指向地址對象的值,也意味着原參數指向對象的值也發生了改變」。
Java中的經常使用包 | 說明 |
---|---|
java.lang | 包含一些Java語言的核心類,如String、Math、Integer、System和Thread,提供經常使用功能。 |
java.awt | 包含了構成抽象窗口工具集(abstract window toolkits)的多個類,這些類被用來構建和管理應用程序的圖形用戶界面(GUI)。 |
java.net | 包含執行與網絡相關的操做的類。 |
java.io | 包含能提供多種輸入/輸出功能的類。 |
java.util | 包含一些實用工具類,如定義系統特性、使用與日期日曆相關的函數。 |