一切都是對象
之前自己學習Java就是以系統的角度去學習,就是我們把這些知識點羅列出來,然後做一個全面的學習。這樣的的確確可以將知識點都學習全面,但是自己理解上來說還是很淺層次的。如果一段時間沒有去使用Java我覺得自己還是會忘記,所以去理解爲什麼對於學習Java是很重要的。
上節我們從語言的角度去分析,語言就是描述人類的想法和同時讓計算機辨識的一種標識。根據這個語言是偏向我們人類好理解,還是計算機好理解可以分爲,面向過程語言和麪向對象的語言。Java就屬於面向對象的語言。
那麼面嚮對象語言,我們主要去理解的就是這個對象,我們編寫程序就是去操作這個語言。
那麼:
·Java是怎麼去操作這個對象的呢?
·同時這個對象怎麼生成的?
·我們又怎麼去區分這麼多對象呢?
·對象的存在應該有空間,那麼對象存儲在哪呢?
·有開始就有結束,有生成就有銷燬,那麼Java是怎麼銷燬一個對象的呢?
·還有就是是不是真的就是一切都是對象,有沒有一些特例呢?
·最後面我們寫的程序應該就是很多個對象的組合和操作,他們之間是怎麼運作的呢?我們這一節就是面對這些問題,我們對對象的理解就會更加深刻。
Java怎麼操作對象?
Java是用引用(reference)去操作對象,用字符串去解釋這個引用。
String s;
那麼這個s就是引用,那麼我們這樣是不是可以操作對象了。不行,因爲我們還沒有創建對象,沒有對象給我們操作,直接運行是會報錯的。這也是我們編程中經常會遇到的空指針異常。
Java怎麼創建對象?
Java使用new關鍵字來創建對象。
String s1 = new String(“hello”);
String s2 = “hello”;
String字符串比較特殊,可以直接使用””來創建對象。那麼這些創建好的對象到底存儲在哪裏呢?
Java怎麼存儲對象?
除此之外這些都是對象的數據的存儲位置等等一些知識,那麼Java當中還有一些特殊的數據類型。按照面向對象的思想,一切都是對象,不管什麼數據都應該是對象,但是Java對於一些基礎的數據類型爲了運行效率和內存的優化,將8個基本類型進行了特殊處理。同時針對8個基本類型的存儲的大小的限制有了BigDecimal和BigInteger進行擴展。
我們知道Java是如何存儲數據之後我們如何去分辨這麼多對象呢?
Java如何分辨對象?
Java中使用Class這個關鍵字來創建新的對象類型,也就是通過Class 來分辨對象。更加具體的是類裏面的內容--域和方法。
域就是我們通常所說的成員變量。這裏面需要注意的是,如果我們初始化的話,Java程序一般會給一些默認值8個基本類型一般給一個0,引用類型給一個null。所以我們需要初始化這些成員變量。但是這種給與默認值的情況不適合方法裏面的局部變量。
方法在以前經常認爲是函數,但是本書有一個說法更加能體現他作用,就是接受一個消息進行操作。
認識完這些之後我們是不是可以隨便的使用創建好的對象呢?
Java的作用域
Java跟C語言和C++語言都是通過花括號來限定變量名的可見性。
最後我們創建了實例我們需要控制他的銷燬。
Java如何銷燬實例?
Java通過GC垃圾處理機制銷燬實例,這部分不需要程序員去控制。
以上就是我們對對象的理解,那麼是不是有需要將一些方法單獨拿出來,這個方法不屬於任何對象,這個時候我們處理?
不是對象的特殊處理
使用static關鍵字,分static修飾的成員變量和成員方法。這些變量和成員方法可以每一個對象共享。
我們理解完對象之後,我們就需要將這些對象組合起來,運行成一個Java程序。
怎麼構建一個Java程序?
我們使用class創建一個新的類型,如果我們使用了相同的名字在不同的包下創建我們怎麼知道他們之間的區別呢?這裏就需要將類標註在那個包下。
同時我們使用其他的類型的時候我們怎麼知道我們選擇的是哪個對象呢?所以需要使用import關鍵字來引用具體的類型。去識別。