回顧編程基礎之Java篇(二)

這篇主要講講 java面向對象程序設計的基礎。
我們先來看一下程序設計的發展過程:
1. 過程式程序設計:這裏不做細講。
2. 結構化程序設計: 在系統開發前,對程序系統進行整體規劃,描述出系統的功能,並進行模塊劃分、功能分配、數據通信、異常處理。
好處: 比過程式程序設計要好
不足: 程序系統知識爲了現有的功能實現,沒有考慮將來
發生變化之後的應對。違背了軟件工程的職責均衡原則
3. 面向對象程序設計: 力求使得程序中的代碼與現實世界中的事物完全一致,程序系統不光滿足現有的業務功能,而且要滿足將來的業務變化。

面向對象程序設計最重要的兩個因素就是類和對象。

類是對一些具有部分相同特徵及屬性的事物的抽象,取其共性,它只是一種概念,並不是一個現實存在的實體。

而對象則相當於對某種類的具體實現,類是對象的模板, 對象是類的具體存在,由類構造對象的過程稱爲實例化。

根據類產生或者構造出對象之後,類中描述的功能就變成了對象的功能。

一個類可以產生無數個對象,對象之間相互不存在關聯。

類的定義方法如下:
語法: 修飾符 class 類名{
[屬性定義]
[方法定義]
}

類中方法的定義如下:
語法:修飾符 返回值數據類型 方法名(形參){
0 ~ n行代碼
}

接下來,就是對象的構造。
對象的構造通過java虛擬機調用類中的構造函數來完成。

構造函數:
作用: 構造對象時對對象的屬性進行初始化, 構造對象時被jvm自動調用
語法:
1. 方法名與類同名
2. 沒有返回值類型
3. 定義一個類時,系統默認會提供一個無參的構造函數, 當用戶自定義了有參的構造函數時,系統不再提供無參的構造函數。

對象的構造與初始化
.new 構造函數(…)
①根據構造函數找到構造函數所屬的類並理解構造該類的對象。
②調用該對象的構造函數對屬性進行初始化
③new 構造函數():每次都會產生一個新的對象
例如:

 Student student = new Student();

① Student student; 定義一個Student類型的變量,此時該變量不佔據內存空間。
② new Student(): 構造一個Student類型的對象並對該對象進行初始化。
③ 將對象在內存中的地址值賦給student變量,此時該變量佔據內存。

當通過new 運算符與構造函數構造一個對象之後, jvm會將對象存放在堆地址中,爲了要使用堆中的這個對象,jvm必須在棧中生成一個對象所屬的類的類型的變量指向堆中的這個對象, 這個變量保存的是堆中對象的地址值, 所以該變量稱爲引用變量(例如上述的Student student就是定義了一個Student類型的引用變量), 以後就可以通過該引用變量操作對象的各種成員。

這裏來講一下java的內存分配和管理
java的內存分配方式有兩種:以堆的方式和以棧的方式
棧:存放基本數據類型數據以及引用數據類型的引用變量
堆:存放引用數據類型的對象

內存的分配時機:
1. 屬性:在構造對象時進行內存分配
2. 方法:在被調用時分配內存

內存的釋放:
1. 對於棧中的數據,方法運行完畢之後自動從內存中清除。
2. 對於堆中的數據,方法運行完畢之後只是變成了垃圾,還佔據內存,由jvm的垃圾收集器在某個不確定的時候自動進行回收,不由程序員控制管理。

對象的使用原則:
1. 對象只有在使用時才構造。
2. 對象使用完畢之後要立即進行釋放。
3. 釋放方式:將指向堆中對象的引用變量置空,將指向堆中對象的引用變量指向其他對象。

最後來講一下java的源文件結構
1. package: 管理類並避免類的重名
它的使用有以下幾點注意:
(1). 如果一個類被包管理,那麼該類所屬的源文件必需存放在與包名一致的目錄結構下。
(2). 包名必需在位於程序代碼的第一行,包名全部用小寫,相互之間用.號隔開。
(3). 被包管理的類的調用必需通過包名纔可以, 頂級包名的上一級目錄是虛擬機可以默認查找到被包管理的類的目錄
2. import: 在本類中導入被調用的其他不同包下的類
導入順序爲:
Java基礎包
Java擴展包
第三方提供的組件包
本工程其他的包

補充:
java程序的中斷控制方式
1. return
return 值:將方法的運算結果返回給調用者並退出當前執行的代碼塊。
return:告訴虛擬機運行到此處時退出當前執行的代碼塊
2. break、continue:在循環條件滿足的情況下提前終止循環語句的執行
3. System.exit(): 系統退出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章