更新時(shí)間:2023-05-15 來(lái)源:黑馬程序員 瀏覽量:
當(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)被成功修改了。