歡迎各位讀者關注個人微信公衆號,共同探討Java相關技術。生命不止,學習不休!java
也許你慢慢地對程序有了這樣的認識:程序只是一些列帶有方法的對象的組合,這些方法以其它對象爲參數,可在任何地方返回,併發送消息給其餘對象。這樣的認識,目前來講,是對的。
決定了對象的外觀與行爲。Java中用class關鍵字來對類進行定義。
在Java中,容許程序員定義一個新的數據類型來知足其應用的需求。其形式爲class後跟上新類型的名稱。好比:程序員
class NewTypeName { //class definition }
經過以上代碼,你就定義了一個新的名爲NewTypeName
的數據類型。類型名稱能夠由程序員本身定義,而class
關鍵字是必須的、大小寫敏感的,必定不能寫錯。可是單純地定義一個空類定義的類,是沒有任何意義的。設計模式
類最基本的做用,在於經過類獲取到相應的對象,在向對象發送消息時,以指望對象作某些特定的事情。
在對類進行定義後,就能夠在類中設置如下兩種類型的元素:字段和方法。安全
先導概念微信
引用:Java中一切皆對象,所以採用一個指向對象的引用
來操縱對象。併發
基本數據類型:Java中對於小而簡單的變量,採用對象的形式表示會致使本來輕量的變量變得無比厚重且耗費內存空間。因此Java中定義了8種基本數據類型,其直接存儲值
,並置於虛擬機棧中。每種基本數據類型所佔存儲空間大小恆定不變。學習
基本類型 | 大小 | 包裝類型 |
---|---|---|
boolean | - | Boolean |
char | 16bit | Character |
byte | 8bit | Byte |
short | 16bit | Short |
int | 32bit | Integer |
long | 64bit | Long |
float | 32bit | Float |
double | 64bit | Double |
字段spa
字段能夠是基本數據類型中的一種,也能夠是任何類型的對象,能夠經過其引用與其所指向的對象。若是是對某個對象的引用,那麼必須經過初始化使其與一個實際的對象關聯。設計
如何引用對象中的某個字段指針
對象名稱.字段名稱
示例
class NewTypeName { int i; int j; int k; public static void main(String [] args) { NewTypeName type = new NewTypeName(); //此處type是對象的名稱,其是一個引用,i/j/k分別是NewTypeName這個類中的字段 type.i = 1; type.j = 2; type.k = 3; } }
基本成員默認值
基本類型 | 默認值 |
---|---|
boolean | false |
char | 'u0000'(null) |
byte | 0 |
short | 0 |
int | 0 |
long | 0l |
float | 0.0f |
double | 0.0d |
方法
Java中方法用來表示用
用來作某些事情的方式
。方法的基本構成部分包括:方法名稱、參數、返回值和方法體
一個方法的基本形式
ReturnType methodName(String arg1, Integer arg2) { /* Method Body */ }
構件解析
方法名稱和參數列表合起來稱爲「方法簽名」,其惟一肯定地標識出某個方法
在Java中,參數老是以值的形式進行傳遞。若是是基本數據類型,則傳遞的是類型的真值;若是是引用類型,則傳遞的是引用的值。Java中不存在引用傳遞
。
return關鍵字在Java的方法中表示返回,存在以下兩種狀況:
在Java中,建立了一個引用變量後,最安全的方案就是爲其綁定一個實際存在的對象,能有效防止惱人的NullPointerException(空指針異常);
Java中經過new操做符來實現對象的建立,其基本形式爲:
new NewTypeName();
其中new關鍵字,表示向堆中申請內存;NewTypeName表示一個數據類型,在申請到內存空間後,會以這個數據類型爲模板進行對象的實例化;實例化完成後,會對對象中的字段進行默認值填充。
在Java中有5個不一樣的地方能夠進行數據存儲:
無家可歸的對象,意味着沒有引用指向該對象,該對象找不到它的歸屬。
在大多數語言中,都存在做用域
的概念。做用域決定了在其內部定義的變量名的可見性和生命週期。在Java中不容許嵌套的做用域中,較小的做用域擁有與較大的做用域相同的變量,以下代碼沒法經過編譯:
//此處的代碼沒法實際運行,只作演示 { int x = 11; { int x = 12; } }
Java中貫徹了一切都是對象的觀念。對象不具有和基本數據類型同樣的生命週期。對象能夠存活於做用域以外
。
如如下代碼:
{ String s = new String("Hello World"); }//運行到這裏,s已經在做用域以外
在上述代碼中,在超過做用域以後,引用變量s的生命週期已經結束,但"Hello World"這個String對象卻依舊存在。其生存於堆中,只是咱們再沒有引用變量來指向這個對象了,所以這個對象對於咱們來講是不可見的。
那麼另一個問題是,Java是如何來保障這些沒有引用變量指向的對象不會把內存塞爆的呢?Java採用了垃圾回收器,用來監視全部用new
關鍵字建立的對象,若是一個對象再也不被引用,那麼垃圾收集器便會在隨後的內存回收活動中銷燬該對象,並釋放其所佔用的內存。所以,Java程序員是不須要太在意內存的回收的。
本文主要以Java的類爲切入點,描述了從類到對象的建立,而後到對象的存放和銷燬的整個流程。因爲咱們大多數的時間都是在建立新的類來知足咱們的業務需求,所以一個類的內部結構異常重要,好的結構能最大化地提高程序運行效率。這涉及到後面講解的設計模式,在此只對類的構成做一個瞭解。
在下一節中,咱們嘗試運用目前已學習的內容,來完成咱們的第一個Java程序。