首頁(yè)常見(jiàn)問(wèn)題正文

final關(guān)鍵字修飾一個(gè)變量時(shí),是引用不能變,還是引用的對(duì)象不能變?

更新時(shí)間:2023-05-15 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  當(dāng)使用final關(guān)鍵字修飾一個(gè)變量時(shí),這個(gè)變量就成為了一個(gè)常量,它的值不能被修改,但是它所引用的對(duì)象本身是可以被修改的。

  具體的原因我們看如下代碼演示:

final int x = 5;
x = 6; // 編譯錯(cuò)誤,因?yàn)?nbsp;x 是 final 常量,它的值不能被修改

final StringBuilder sb = new StringBuilder("Hello");
lb.append(", World!"); // 可以修改 lb 所引用的 StringBuilder 對(duì)象

System.out.println(lb.toString()); // 輸出:Hello, World!

  在上面的代碼中,我們使用final關(guān)鍵字定義了一個(gè)整數(shù)常量x,它的值被設(shè)為5。然后我們?cè)噲D將x的值修改為6,但是由于x是一個(gè)常量,所以編譯器會(huì)報(bào)錯(cuò)。

  接著我們定義了一個(gè)StringBuilder對(duì)象,用final修飾它的引用lb。然后我們可以通過(guò)lb引用來(lái)修改 StringBuilder對(duì)象的內(nèi)容,例如向其中添加一些文本。最后,我們將StringBuilder對(duì)象的內(nèi)容輸出到控制臺(tái)上,可以看到輸出結(jié)果為 "Hello, World!",表明StringBuilder對(duì)象的內(nèi)容已經(jīng)被成功修改了。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!