使用final關(guān)鍵字修飾一個(gè)變量時(shí),是引用不能變,還是引用的對(duì)象不能變?
使用final關(guān)鍵字修飾一個(gè)變量時(shí),是指引用變量不能變,但是引用變量所指向的對(duì)象中的內(nèi)容還是可以改變的。
其實(shí)這個(gè)還是跟final關(guān)鍵字的使用有關(guān)。final關(guān)鍵字除了可以修飾類和方法以外,final關(guān)鍵字還可以用來(lái)修飾變量,其中包括基本數(shù)據(jù)類型的值變量和引用變量。
final修飾的變量其實(shí)就相當(dāng)于定義了一個(gè)常量,無(wú)法被修改的變量。
如果final修飾的是一個(gè)基本數(shù)據(jù)類型的值變量,那么這個(gè)變量的值就定了,不能變了,比如final int i=10;那么就是在棧內(nèi)存中對(duì)i變量賦值為10,這個(gè)值是不能改變的了;而如果final關(guān)鍵字修飾的是一個(gè)引用變量,那么該變量在棧內(nèi)存中存的是一個(gè)內(nèi)存地址,該地址就不能變了,但是該內(nèi)存地址所指向的那個(gè)對(duì)象還是可以變的。
如果拿去買房為例的話,對(duì)于基本數(shù)據(jù)類型的變量,房?jī)r(jià)就好比是被final修飾的基本數(shù)據(jù)類型的變量,一旦定死了就不能修改了(雖然現(xiàn)實(shí)中可以修改的);而對(duì)于引用變量,這個(gè)地皮(棧內(nèi)存地址)一旦規(guī)劃作為住宅用地了,那么便不可以再做其他用途(引用不能指向其他的對(duì)象),但是在這個(gè)地址上蓋什么樣的房子,多少房子是可以改變的(引用對(duì)象的內(nèi)容可以改變)所以使用final關(guān)鍵字修飾一個(gè)變量時(shí),是指引用變量不能變,但是引用變量所指向的對(duì)象中的內(nèi)容還是可以改變的。