首页常见问题正文

final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

更新时间:2023-05-15 来源:黑马程序员 浏览量:

IT培训班

  当使用final关键字修饰一个变量时,这个变量就成为了一个常量,它的值不能被修改,但是它所引用的对象本身是可以被修改的。

  具体的原因我们看如下代码演示:

final int x = 5;
x = 6; // 编译错误,因为 x 是 final 常量,它的值不能被修改

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

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

  在上面的代码中,我们使用final关键字定义了一个整数常量x,它的值被设为5。然后我们试图将x的值修改为6,但是由于x是一个常量,所以编译器会报错。

  接着我们定义了一个StringBuilder对象,用final修饰它的引用lb。然后我们可以通过lb引用来修改 StringBuilder对象的内容,例如向其中添加一些文本。最后,我们将StringBuilder对象的内容输出到控制台上,可以看到输出结果为 "Hello, World!",表明StringBuilder对象的内容已经被成功修改了。

分享到:
在线咨询 我要报名
和我们在线交谈!