在Java中,對(duì)象是由類(lèi)創(chuàng)建而來(lái)的。創(chuàng)建對(duì)象的過(guò)程可以簡(jiǎn)單概括為:申請(qǐng)內(nèi)存空間、初始化實(shí)例變量、調(diào)用構(gòu)造器。其中,申請(qǐng)內(nèi)存空間是最為基本的步驟,Java虛擬機(jī)(JVM)通過(guò)new關(guān)鍵字向操作系統(tǒng)請(qǐng)求分配一塊連續(xù)的、足夠容納對(duì)象的內(nèi)存。
一旦內(nèi)存分配成功,就會(huì)自動(dòng)調(diào)用構(gòu)造器來(lái)完成初始化實(shí)例變量的工作。構(gòu)造器的作用是對(duì)對(duì)象進(jìn)行初始化,即給實(shí)例變量賦上初始值。在定義類(lèi)時(shí)可以不顯式地編寫(xiě)構(gòu)造器,此時(shí)編譯器會(huì)默認(rèn)為該類(lèi)生成一個(gè)無(wú)參數(shù)構(gòu)造器,也可以編寫(xiě)自己需要的構(gòu)造器。
第二段:Java對(duì)象的數(shù)據(jù)封裝
Java面向?qū)ο缶幊讨幸粋€(gè)重要的特性就是數(shù)據(jù)封裝,對(duì)象中的數(shù)據(jù)被封裝在類(lèi)的實(shí)例變量中,可以通過(guò)類(lèi)的方法來(lái)訪問(wèn)和修改數(shù)據(jù),而不需要了解數(shù)據(jù)的細(xì)節(jié)。這就是所謂的“對(duì)象的行為隱藏”。
實(shí)現(xiàn)數(shù)據(jù)封裝的關(guān)鍵就是封裝成員變量,并提供訪問(wèn)成員變量的public方法(getter和setter)。getter方法用于獲取成員變量的值,setter方法用于修改成員變量的值。通過(guò)方法訪問(wèn)成員變量,可以更好地保護(hù)對(duì)象的狀態(tài),避免外界直接修改對(duì)象的屬性。
第三段:Java對(duì)象的使用及注意事項(xiàng)
在Java中,要使用一個(gè)對(duì)象,需要先創(chuàng)建它。一旦對(duì)象被創(chuàng)建,就可以直接訪問(wèn)其公共方法和成員變量。調(diào)用對(duì)象的方法通常會(huì)傳遞一些參數(shù),方法會(huì)根據(jù)參數(shù)執(zhí)行一些動(dòng)作,有時(shí)也會(huì)返回一些值。
在使用Java對(duì)象時(shí),需要注意一些引用相關(guān)的問(wèn)題。例如,如果將一個(gè)對(duì)象賦值給另一個(gè)對(duì)象,實(shí)際上是把引用(內(nèi)存地址)賦值給了另一個(gè)對(duì)象的變量,而不是復(fù)制對(duì)象本身。因此,在修改一個(gè)對(duì)象時(shí),可能會(huì)影響到原對(duì)象。另外,如果把兩個(gè)對(duì)象相互賦值,需要清楚地了解它們之間的關(guān)聯(lián)關(guān)系,否則可能會(huì)導(dǎo)致意外的結(jié)果。