歡迎各位讀者關注個人微信公衆號,共同探討Java相關技術。生命不止,學習不休!vue
也許你慢慢地對程序有了這樣的認識:程序只是一些列帶有方法的對象的組合,這些方法以其它對象爲參數,可在任何地方返回,併發送消息給其餘對象。這樣的認識,目前來講,是對的。java
決定了對象的外觀與行爲。Java中用class關鍵字來對類進行定義。程序員
在Java中,容許程序員定義一個新的數據類型來知足其應用的需求。其形式爲class後跟上新類型的名稱。好比:設計模式
class NewTypeName {
//class definition
}
經過以上代碼,你就定義了一個新的名爲NewTypeName
的數據類型。類型名稱能夠由程序員本身定義,而class
關鍵字是必須的、大小寫敏感的,必定不能寫錯。可是單純地定義一個空類定義的類,是沒有任何意義的。安全
類最基本的做用,在於經過類獲取到相應的對象,在向對象發送消息時,以指望對象作某些特定的事情。微信
在對類進行定義後,就能夠在類中設置如下兩種類型的元素:字段和方法。markdown
先導概念併發
引用
來操縱對象。
存儲值
,並置於虛擬機棧中。每種基本數據類型所佔存儲空間大小恆定不變。
基本類型 | 大小 | 包裝類型 |
---|---|---|
boolean | - | Boolean |
char | 16bit | Character |
byte | 8bit | Byte |
short | 16bit | Short |
int | 32bit | Integer |
long | 64bit | Long |
float | 32bit | Float |
double | 64bit | Double |
字段app
字段能夠是基本數據類型中的一種,也能夠是任何類型的對象,能夠經過其引用與其所指向的對象。若是是對某個對象的引用,那麼必須經過初始化使其與一個實際的對象關聯。學習
如何引用對象中的某個字段
對象名稱.字段名稱
示例
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程序。