對象的三個特征:
對象的行為:這個對象能做什么,也就是能完成什么樣的功能。比如自行車可以載我們想去的地方,節省體力。
對象的狀態:當通過一個操縱對象的方法時,對象所保持的一種包含特定的屬性的狀態。比如我們可以通過扭轉車頭,使自行車拐彎;剎車時,可以讓自行車減速或停下來。
對象的標識符:可以通過標識符,區別具有相同行為或類似狀態的對象。說到自行車,可以有很多種樣子的,很多生產廠家的,都可以說是自行車,可以根據顏色,生產廠家等等與其它的自行車區分。
對象的句柄
對象的句柄:操縱對象的標識符,它是指向一個對象的句柄。根據前面對變量的定義,變量名是內存地址(棧)的一個別名,對于基本類型來講,它的值就是存放在這個內存地址的空間內,對于對象類型來講,它的值是一個指向實際對象的一個地址(堆),而真正的對象是存放于堆中,我們就可以理解為:這就是一個對象的句柄。
例如:String str;
這里只擁有了一個對象句柄,句柄(str)并沒有與任何對象內容相關聯。操縱句柄str時,并向它發送一條消息,這時系統會提示錯誤。所以在創建對象句柄時,一定不要忘記將句柄與實際的對象內容相關聯(也就是對象變量的初始化)。
對象變量的初始化
對象變量的初始化是通過new關鍵字來完成對象的創建過程。它是向內存堆中申請一個空間,將這個對象內容放到這里,然后將內容與對象句柄(存在于棧中)關聯起來。
例如:String str = new String( “ Hello ” );