每種編程語言都有自己的數(shù)據(jù)處理方式溯警。有些時候耻煤,程序員必須時刻留意準備處理的是什么類型昼伴。您曾利用一些特殊語法直接操作過對象啦桌,或處理過一些間接表示的對象嗎(C或C++里的指針)溯壶?
所有這些在Java里都得到了簡化,任何東西都可看作對象。因此且改,我們可采用一種統(tǒng)一的語法验烧,任何地方均可照搬不誤。但要注意又跛,盡管將一切都“看作”對象碍拆,但操縱的標識符實際是指向一個對象的“句柄”(Handle)。在其他Java參考書里效扫,還可看到有的人將其稱作一個“引用”倔监,甚至一個“指針”【剩可將這一情形想象成用遙控板(句柄)操縱電視機(對象)浩习。只要握住這個遙控板,就相當于掌握了與電視機連接的通道济丘。但一旦需要“換頻道”或者“關(guān)小聲音”谱秽,我們實際操縱的是遙控板(句柄),再由遙控板自己操縱電視機(對象)摹迷。如果要在房間里四處走走疟赊,并想保持對電視機的控制,那么手上拿著的是遙控板峡碉,而非電視機近哟。
此外,即使沒有電視機鲫寄,遙控板亦可獨立存在吉执。也就是說,只是由于擁有一個句柄地来,并不表示必須有一個對象同它連接戳玫。所以如果想容納一個詞或句子,可創(chuàng)建一個String句柄:
String s;
但這里創(chuàng)建的只是句柄未斑,并不是對象咕宿。若此時向s發(fā)送一條消息,就會獲得一個錯誤(運行期)蜡秽。這是由于s實際并未與任何東西連接(即“沒有電視機”)府阀。因此,一種更安全的做法是:創(chuàng)建一個句柄時载城,記住無論如何都進行初始化:
String s = "asdf";
然而肌似,這里采用的是一種特殊類型:字串可用加引號的文字初始化。通常诉瓦,必須為對象使用一種更通用的初始化類型川队。